如何使用标记执行Python类

问题描述 投票:0回答:1

我创建了一个类,它有一个父类和一个基类。 两个班级都有标记。 我想仅使用该特定标记来运行和执行测试。 示例:如果我执行

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")
python pytest pytest-markers
1个回答
0
投票

由于您的类相互继承,因此派生类也将继承超类的标记。

此外,由于

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

如果您确实需要从某个共享类派生多个测试用例,请创建一个未标记的第三个类并从那里继承。

© www.soinside.com 2019 - 2024. All rights reserved.