每个存储的测试都有一个带有全局标记的测试文件:
from pytest import mark
pytestmark = mark.unit
这可以按预期工作,并且该文件中的所有测试都标记为unit
。但是,我想为单个测试覆盖该标记,以使其不再具有unit
标记。
当我在要修改的测试函数上使用修饰符时,它会覆盖unit
和新的integration
标记,而不是覆盖原始标记:
@mark.integration
def test_integration():
pass
我已经检查了标记装饰器的来源,似乎它调用了store_mark
,并且没有其他可让我覆盖现有测试标记的属性。
有没有惯用的解决方案来覆盖现有的测试标记,还是应该将测试存储在单独的文件中?
答案 0 :(得分:2)
我认为没有内置功能。您有几种选择:
实施一个为您提供unmark
装饰器的插件。 Someone has already tried this,但我尚未测试。
或将您所有的unit
测试放入一个类中,并用标记修饰该类。
import pytest
@pytest.mark.unit
class TestUnits:
def test1(self):
pass
@pytest.mark.integration
def integration_test():
pass