如何在pytest的teardown夹具中打印测试用例的执行状态
在pytest fixture的teardown阶段打印测试用例执行结果
可以通过pytest内置的request fixture获取测试节点的执行状态,在fixture的teardown逻辑中实现结果打印。以下是完整实现方案:
实现代码
import pytest # 定义自动应用的fixture,所有测试用例都会触发 @pytest.fixture(autouse=True) def log_test_result(request): yield # 此处为测试用例执行阶段 # Teardown阶段:获取测试用例信息与执行结果 test_case_name = request.node.name # rep_call属性存储测试执行后的结果,outcome字段为状态(passed/failed/skipped等) test_outcome = request.node.rep_call.outcome # 打印自定义结果信息 print(f"\n{test_case_name} {test_outcome}") # 测试用例1:执行失败 def test_1(): assert 1 == 2 # 测试用例2:执行通过 def test_2(): assert 1 == 1
运行说明
执行测试时需要加上-s参数(禁用输出捕获),才能看到teardown阶段的打印内容:
pytest -s test_file.py
输出示例
test_1 failed test_2 passed
关键细节说明
autouse=True:让fixture自动作用于所有测试用例,无需手动在测试函数中引用request.node:代表当前执行的测试节点,包含测试用例的名称、执行结果等元数据request.node.rep_call.outcome:存储测试执行的最终状态,常见值包括passed、failed、skipped、xfailed等,可根据需求扩展判断逻辑
内容的提问来源于stack exchange,提问作者stack overflow
相关产品推荐
相关产品推荐

