Python PyTest中单个测试的覆盖标记
每个存储的测试都有一个带有全局标记的测试文件:Python PyTest中单个测试的覆盖标记,python,unit-testing,pytest,Python,Unit Testing,Pytest,每个存储的测试都有一个带有全局标记的测试文件: from pytest import mark pytestmark = mark.unit 这将按预期工作,并且此文件中的所有测试都标记为unit。但是,我希望覆盖单个测试的标记,以便它不再具有单元标记 当我在要修改的测试函数上使用decorator时,它不覆盖原始标记,而是同时包含unit和新的integration标记: @mark.integration def test_integration(): pass 我已经检查了m
from pytest import mark
pytestmark = mark.unit
这将按预期工作,并且此文件中的所有测试都标记为unit
。但是,我希望覆盖单个测试的标记,以便它不再具有单元
标记
当我在要修改的测试函数上使用decorator时,它不覆盖原始标记,而是同时包含unit
和新的integration
标记:
@mark.integration
def test_integration():
pass
我已经检查了marker decorator源代码,它似乎调用了store\u mark
,并且没有其他属性可以让我覆盖现有的测试标记
是否有任何惯用的解决方案来覆盖现有的测试标记,或者我应该将测试存储在一个单独的文件中?我认为这没有内置的功能。您有几个选择: 实现一个插件,为您提供一个
取消标记
装饰器。但我还没有测试过
或者将所有单元
测试放在一个类中,并用标记装饰该类
import pytest
@pytest.mark.unit
class TestUnits:
def test1(self):
pass
@pytest.mark.integration
def integration_test():
pass
分离测试最初是为了解决这个问题,我只是想知道是否有一个内置的解决方案。下次如果出现类似问题,我可能会尝试取消标记。谢谢