pytest中的markers
时间: 2023-10-12 08:16:45 浏览: 135
在 pytest 中,markers 是一种用于在测试函数或测试类上标记特定属性的装饰器。它们可以用来控制测试的行为和组织方式。
常见的 pytest markers 有:
- @pytest.mark.skip(reason):跳过测试原因。
- @pytest.mark.xfail(reason):标记测试预期失败。
- @pytest.mark.parametrize(argnames, argvalues):参数化测试。
- @pytest.mark.timeout(timeout):设置测试超时时间。
- @pytest.mark.parametrize(('input', 'expected_output'), [(input1, expected_output1), (input2, expected_output2)]):参数化测试,同时传入多组参数。
可以通过在命令行中使用 `-m` 选项来运行特定标记的测试,例如:
```
$ pytest -m slow
```
这将只运行被 `@pytest.mark.slow` 标记的测试。
相关问题
pytest 中 fixture
pytest 是一种流行的 Python 测试框架,它允许开发者编写模块化、易于维护的测试代码。fixture 是 pytest 提供的一种核心功能,它可以看作是一个预配置的辅助函数,用于在每个测试运行之前设置环境、创建测试数据或初始化测试资源。
fixture 具有以下特点和用途:
1. **隔离性**:每次测试开始前都会独立地执行fixture,这意味着你可以保证测试间的环境一致性,避免数据污染。
2. **复用**:一个fixture可以在多个测试中共享,无需每次手动设置相同的测试条件。
3. **生命周期管理**:pytest会根据fixture的定义自动管理其生命周期,如在test结束后清理资源。
4. **标记**:可以给fixture添加标记(markers),以便控制特定fixture仅在满足特定条件下才执行。
5. **装饰器式使用**:通过 `@pytest.fixture` 装饰器声明fixture,并可以使用 `yield` 关键字返回值,以便在测试中使用。
要使用fixture,通常需要按照以下步骤:
- 定义fixture:使用 `@pytest.fixture` 装饰器声明。
- 在测试函数中引用fixture:使用 `@pytest.mark.usefixtures('fixture_name')` 或直接作为参数传入函数。
- 使用fixture:在`yield`之后获取并处理fixture提供的值。
pytest中的Mark
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的测试用例以外的所有测试用例
```
阅读全文