pytest有哪些装饰器
时间: 2024-09-12 11:13:40 浏览: 46
pytest是一个流行的Python测试框架,它提供了一些内置的装饰器用于组织和标记测试函数,以便更方便地管理和运行测试。以下是几个常用的pytest装饰器:
1. **@pytest.mark.parametrize**:用于参数化测试,允许你一次性运行多种组合的输入值,通常配合with\_fixture一起使用。
```python
@pytest.mark.parametrize("arg1, arg2", [(1, 2), (3, 4)])
def test_addition(arg1, arg2):
assert arg1 + arg2 == 3
```
2. **@pytest.mark.skip** 或 **@pytest.mark.xfail**: 分别表示跳过当前测试和期望失败但实际通过的测试。这在需要暂时忽略或验证特定条件时很有用。
```python
@pytest.mark.skip(reason="Feature not implemented yet")
def test_feature():
pass
@pytest.mark.xfail(reason="Expected to fail with bug #12345")
def test_edge_case():
assert False
```
3. **@pytest.mark.timeout**:设置测试函数的最大运行时间,超过这个时间将自动断言失败。
```python
import pytest
from time import sleep
@pytest.mark.timeout(5)
def test_slow_process():
sleep(10) # 这个测试会超时
```
4. **@pytest.fixture**:定义可复用的数据或资源,供整个测试模块共享。这些"fixture"可以用作装饰器或作为函数参数。
```python
@pytest.fixture
def my_fixture():
yield 'Fixture value'
def test_using_fixture(my_fixture):
assert my_fixture == 'Fixture value'
```
阅读全文