pytest收集用例钩子
时间: 2023-08-22 08:09:38 浏览: 151
pytest提供了一些钩子函数来自定义测试用例的收集行为。以下是一些常用的收集用例钩子:
1. `pytest_collection_modifyitems(config, items)`:该钩子会在测试用例收集完成后被调用。你可以使用这个钩子来修改测试用例的收集结果。`config`参数提供了配置信息,`items`参数包含了所有的测试用例对象。
2. `pytest_collection_modifyitems(session, config, items)`:这个钩子与上一个钩子类似,但是它在整个测试会话开始之前被调用,包括测试用例的收集和执行。
3. `pytest_collection_finish(session)`:该钩子会在测试用例收集完成后被调用,可以做一些收集结束后的清理工作。
4. `pytest_ignore_collect(path, config)`:返回True表示忽略指定路径下的文件或目录的测试用例收集。
这只是一些常见的收集用例钩子函数,还有其他更多的钩子函数可以用来自定义收集行为。你可以查阅pytest官方文档来了解更多详情。
相关问题
pytest中后置钩子函数
在 pytest 中,可以使用后置钩子函数来执行一些在测试用例运行后需要进行的操作。后置钩子函数可以通过使用`@pytest.fixture`装饰器来定义,并可以在被测试函数中作为参数来调用。
常见的后置钩子函数有以下几种:
1. `pytest.fixture(autouse=True)`:该装饰器可以自动应用于所有测试用例,并在每个测试用例执行完毕后被调用。
2. `request.addfinalizer()`:可以在 fixture 函数中使用此方法定义一个后置钩子函数,它将在测试用例执行完毕后被调用。
3. `pytest.fixture(scope="session")`:此装饰器指定了 fixture 的作用域为整个测试会话,因此后置钩子函数将在所有测试用例执行完毕后被调用。
下面是一个示例代码,展示了如何使用后置钩子函数:
```python
import pytest
@pytest.fixture(autouse=True)
def teardown():
# 在每个测试用例执行完毕后执行一些操作
print("运行后置钩子函数")
def test_example():
# 测试用例的代码
assert 1 + 1 == 2
```
在上面的示例中,`teardown()` 函数被定义为一个后置钩子函数,并通过 `@pytest.fixture(autouse=True)` 装饰器指定为自动应用于所有测试用例。因此,在每个测试用例执行完毕后,都会打印出"运行后置钩子函数"。
这只是一个简单的示例,你可以根据实际需求在后置钩子函数中执行更复杂的操作,例如清理测试数据或关闭资源等。
pytest常用的钩子函数
1. pytest_configure(config): 在 pytest 的配置过程中调用,可以从 config 对象中获取 pytest 的配置信息。
2. pytest_collection_modifyitems(session, config, items): 在收集测试用例之后,对测试用例进行修改和排序。
3. pytest_runtest_logstart(nodeid, location): 在测试用例执行之前,记录测试用例的开始信息。
4. pytest_runtest_setup(item): 在测试用例执行之前,进行测试用例的初始化操作。
5. pytest_runtest_call(item): 执行测试用例的核心方法,可以在此处添加自定义的测试逻辑。
6. pytest_runtest_teardown(item): 在测试用例执行之后,进行测试用例的清理操作。
7. pytest_runtest_logreport(report): 在测试用例执行之后,记录测试用例的结果信息。
8. pytest_terminal_summary(terminalreporter): 在所有测试用例执行完毕之后,打印测试结果的总结信息。
9. pytest_sessionfinish(session, exitstatus): 在整个 pytest 运行结束之后,可以进行一些清理操作,如关闭数据库连接等。
阅读全文