pytest如何显式标记测试用例 避免名称重复出现test字样
pytest显式标记测试用例方案
无需修改全局测试发现规则,可通过以下两种方式实现自定义命名的测试用例识别:
方案1:使用__test__属性标记(推荐)
pytest原生支持通过__test__属性判定目标是否为测试用例,该规则优先级高于默认的命名匹配规则。你可以直接给测试函数/方法添加该属性,也可以封装为装饰器复用:
基础写法
import pytest def add(a, b): return a + b class TestAdd: def one_and_one_is_two(self): __test__ = True assert add(1, 1) == 2
装饰器封装写法(复用性更高)
先定义通用装饰器:
def test_case(func): func.__test__ = True return func
后续所有测试方法直接装饰即可,无需重复设置属性:
class TestAdd: @test_case def one_and_one_is_two(self): assert add(1, 1) == 2 @test_case def two_and_three_is_five(self): assert add(2, 3) == 5
方案2:自定义标记配合运行配置
你可以通过pytest的自定义标记功能,显式标记测试用例:
- 给目标方法添加自定义标记:
class TestAdd: @pytest.mark.case def one_and_one_is_two(self): assert add(1, 1) == 2
- 运行时指定匹配标记即可执行对应用例:
pytest -m case
如果需要默认执行所有带该标记的用例,可以在项目根目录的pytest.ini中添加配置:
[pytest] markers = case: 自定义测试用例标记 addopts = -m case
两种方案都不需要修改pytest默认的测试发现规则,可根据使用场景自由选择。
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

