pytest中的Mark
时间: 2023-12-09 11:37:09 浏览: 81
pytest中的Mark是一种标记机制,可以用于标记测试用例或测试用例集合,以便于在运行测试时选择性地执行或排除某些测试用例。Mark可以通过装饰器或pytest.ini文件进行添加,也可以通过命令行参数进行指定。
以下是一些使用Mark的例子:
1.使用装饰在测试用例上添加Mark:
```python
import pytest
@pytest.mark.smoke
def test_login():
# 测试用例代码
pass
@pytest.mark.regression
def test_register():
# 测试用例代码
pass
```
2.使用pytest.ini文件在测试用例上添加Mark:
```ini
[pytest]
markers =
smoke: 标记为冒烟测试
regression: 标记为回归测试
```
3.使用命令行参数指定Mark:
```bash
pytest -m smoke # 执行所有标记为smoke的测试用例
pytest -m "not regression" # 执行除了标记为regression的测试用例以外的所有测试用例
```
相关问题
下面对pytest mark注解描述正确的有? A.可以使用pytest-mark进行分类 B.可以使用pytest-mark进行参数化测试 C.可以使用pytest-mark设置用例执行顺序 D.可以使用pytest-mark进行分组测试
A. 可以使用pytest-mark进行分类
B. 可以使用pytest-mark进行参数化测试
D. 可以使用pytest-mark进行分组测试
这三个描述都是正确的。pytest的mark注解是一个强大的功能,可以对测试用例进行分类、参数化和分组。通过使用mark注解,可以给测试用例添加标签,方便对测试用例进行筛选和执行。例如,可以使用`@pytest.mark.parametrize`来对测试用例进行参数化,使用`@pytest.mark.<name>`来进行分类,使用`@pytest.mark.<name>`来进行分组。这些mark注解可以根据需要自定义,提高测试用例的灵活性和可维护性。
C选项 "可以使用pytest-mark设置用例执行顺序" 描述不准确。pytest-mark注解并不能直接用于设置用例的执行顺序。pytest默认会根据测试文件中定义的顺序来执行测试用例,如果需要指定用例执行的顺序,可以通过pytest的插件或者使用`pytest-ordering`插件来实现。
@pytest.mark.parametrize 或者 @pytest.mark.allure.step用法
`@pytest.mark.parametrize` 是 pytest 提供的一个装饰器,可以用于参数化测试用例。它可以让我们在测试用例中使用多组参数来执行同一个测试用例,从而减少测试用例的编写量,提高效率。
示例代码:
```python
import pytest
@pytest.mark.parametrize("input, expected_output", [
(1, 2),
(2, 3),
(3, 4),
(4, 5),
])
def test_increment(input, expected_output):
assert input+1 == expected_output
```
`@pytest.mark.allure.step` 也是 pytest 提供的一个装饰器,用于生成测试报告。它可以将测试用例中的每个步骤作为报告的一个单独的步骤展示,从而更直观地展示测试用例的执行情况。
示例代码:
```python
import pytest
import allure
@allure.step("输入用户名和密码")
def input_username_and_password(username, password):
pass
@allure.step("点击登录按钮")
def click_login_button():
pass
@allure.step("验证登录成功")
def verify_login_success():
pass
def test_login():
input_username_and_password("testuser", "testpass")
click_login_button()
verify_login_success()
```
以上是 `@pytest.mark.parametrize` 和 `@pytest.mark.allure.step` 的基本用法。需要注意的是,`@pytest.mark.allure.step` 需要安装 `pytest-allure-adaptor` 才能正常使用。
阅读全文