如何为tests目录下所有测试文件批量设置pytest标记?
可行解决方案
你原来写的pytest.mark.mymark只是创建了标记对象,但没有将其绑定到任何测试用例上,所以不会生效。以下是两种可行的实现方式:
方法一:批量添加标记的基础实现
在tests/__init__.py中写入以下代码,利用pytest的pytest_collection_modifyitems钩子,给所有收集到的测试用例统一添加标记:
import pytest def pytest_collection_modifyitems(config, items): # 遍历所有测试用例,添加mymark标记 for item in items: item.add_marker(pytest.mark.mymark)
方法二:带标记注册的完整实现(推荐)
如果想避免pytest运行时出现"未知标记"的警告,可以先注册标记,再批量添加:
import pytest def pytest_configure(config): # 注册自定义标记,描述可自行修改 config.addinivalue_line( "markers", "mymark: 用于标记tests目录下的所有测试用例" ) def pytest_collection_modifyitems(config, items): for item in items: # 可选:只给tests目录下的测试用例加标记(过滤其他路径的测试) if "tests/" in str(item.fspath): item.add_marker(pytest.mark.mymark)
补充说明
pytest更推荐将这类配置代码放在tests/conftest.py文件中(无需额外导入,pytest会自动识别),但放在__init__.py中也能正常生效。
内容的提问来源于stack exchange,提问作者mbt
相关产品推荐
相关产品推荐

