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

分离测试最初是为了解决这个问题,我只是想知道是否有一个内置的解决方案。下次如果出现类似问题,我可能会尝试取消标记。谢谢