pytest常用的装饰器
时间: 2023-06-17 18:08:05 浏览: 177
pytest常用的装饰器有:
1. @pytest.fixture:将一个函数标记为fixture,用来提供测试函数所需的对象、数据、服务等资源。
2. @pytest.mark.parametrize:为测试函数提供多组参数,用来执行多次相同的测试用例。
3. @pytest.mark.skip(reason):标记当前测试用例为跳过状态,并指定跳过原因。
4. @pytest.mark.xfail(reason):标记当前测试用例为预期失败状态,并指定失败原因。
5. @pytest.mark.timeout:为测试函数设置超时时间。
6. @pytest.mark.parametrize("argname, argvalue", [(value1, value2), (value3, value4)]):标记当前测试用例为参数化测试,并指定参数名称和参数值。
7. @pytest.mark.usefixtures(fixturename):指定当前测试函数使用哪些fixture。
8. @pytest.mark.dependency(name, depends):标记当前测试函数的依赖关系,依赖于其他测试函数的执行结果。
9. @pytest.mark.filterwarnings:标记当前测试用例忽略指定的警告信息。
10. @pytest.mark.flaky(reruns, reruns_delay):标记当前测试用例可以重试多次,以解决偶现问题。
相关问题
pytest的装饰器
pytest的装饰器有多种用途,可以用来标记测试用例、跳过测试用例、标记预期失败的测试用例等。在引用\[1\]中的示例中,@pytest.mark.skip(reason='不执行')装饰器被用来标记test_01函数,表示该函数不会被执行。在引用\[2\]中的示例中,@pytest.mark.xfail(reason='跳过')装饰器被用来标记test_02函数,表示该函数是一个预期失败的测试用例。在引用\[3\]中的示例中,没有使用装饰器标记测试用例。
#### 引用[.reference_title]
- *1* *2* *3* [Pytest测试框架(四)---装饰器的使用](https://blog.csdn.net/weixin_44701654/article/details/128176992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
pytest 常用的装饰器有哪些,详细展开并举例说明
pytest 常用的装饰器有以下几个:
1. `@pytest.fixture`:用于创建测试用例需要使用的测试数据或测试环境,并在测试用例执行前后完成资源的分配和释放。例如:
```python
@pytest.fixture
def user():
return User('test_user', '123456')
def test_login(user):
assert login(user.username, user.password) == 'success'
```
2. `@pytest.mark.parametrize`:用于参数化测试用例,允许在同一个测试函数中多次执行相同的测试用例,只需提供不同的参数组合即可。例如:
```python
@pytest.mark.parametrize('a, b, expected', [(1, 2, 3), (3, 4, 7)])
def test_add(a, b, expected):
assert add(a, b) == expected
```
3. `@pytest.mark.skip`:用于跳过某些测试用例,通常是因为这些测试用例不适用于当前的测试环境或测试数据。例如:
```python
@pytest.mark.skip(reason='not implemented')
def test_something():
pass
```
4. `@pytest.mark.xfail`:用于标记期望测试用例失败,即使测试用例失败了也不会报错,通常是因为这些测试用例涉及到一些还未实现的功能。例如:
```python
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_divide_by_zero():
assert 1 / 0 == 0
```
以上是 pytest 常用的装饰器及其用法,希望能对你有所帮助。
阅读全文