获取所有自定义标记的列表

Get a list of all custom markers

如果我有一个带有自定义标记的简单测试用例,例如:

class TestClass:

    @pytest.mark.first
    def test_first(self):
        assert True

    @pytest.mark.second
    def test_second(self):
        assert True

    @pytest.mark.third
    def test_third(self):
        assert True

如何获取整个自定义标记的列表,因为 $ py.test -v --markers returns 预定义标记的列表

@pytest.mark.skipif(condition)
@pytest.mark.xfail(condition, reason=None, run=True, raises=None)
@pytest.mark.parametrize(argnames, argvalues)
@pytest.mark.usefixtures(fixturename1, fixturename2, ...)
@pytest.mark.tryfirst
@pytest.mark.trylast

没有

@pytest.mark.first
@pytest.mark.second
@pytest.mark.third

您需要将标记名称添加到您的 pytest.ini 才能注册它们。参见 https://docs.pytest.org/en/latest/example/markers.html#registering-markers

首先,您需要在名为 pytest.ini:

的文件中注册所有自定义标记
# pytest.ini
[pytest]
markers = first_customer_marker
    another_custom_marker
    oh_one_more_marker

现在要获取自定义标记列表,您可以使用以下函数之一:

  • config.getini('markers'):这将 return 包含自定义标记以及内置标记的列表,例如 pararmetrizeskipskipif,等等
  • config._getini('markers'):这将return一个仅包含自定义标记的列表

示例:

def pytest_collection_modifyitems(items):
    for item in items:
        print(item.config.getini('markers'))
        print(item.config._getini('markers'))