我创建了一个类,它有一个父类和一个基类。 两个班级都有标记。 我想仅使用该特定标记来运行和执行测试。 示例:如果我执行
pytest -m "Nevada"
或 pytest -m Nevada
那么只有内华达类测试应该执行,而不是魁北克类测试。
目前,当我执行此命令时,两个类实例都已创建,并且两个实例都执行了 test_txt_24102_2。
以下是代码:
@pytest.mark.Nevada
class Nevada:
def step_1(self):
print("Step 1 for Nevada")
def step_2(self):
print("Step 2 for Nevada")
def step_3(self):
print("Step 3 for Nevada")
def test_txt_24102_2(self):
self.step_1()
self.step_2()
self.step_3()
@pytest.mark.G2S
@pytest.mark.Quebec
class TestQuebec(Nevada):
def step_1(self):
print("Step 1 for Quebec")
def step_2(self):
print("Step 2 for Quebec")
由于您的类相互继承,因此派生类也将继承超类的标记。
此外,由于
Nevada
类未命名为 Test...
,因此根本不会对测试进行内省。
你需要类似的东西
import pytest
@pytest.mark.Nevada
class TestNevada:
def test_x(self):
pass
@pytest.mark.G2S
@pytest.mark.Quebec
class TestQuebec:
def test_y(self):
pass
然后事情就会如你所愿。
$ pytest test_78706988.py -vv -m Quebec
collected 2 items / 1 deselected / 1 selected
test_78706988.py::TestQuebec::test_y PASSED
$ pytest test_78706988.py -vv -m Nevada
collected 2 items / 1 deselected / 1 selected
test_78706988.py::TestNevada::test_x PASSED
如果您确实需要从某个共享类派生多个测试用例,请创建一个未标记的第三个类并从那里继承。