pytest:是否可以从代码中启用标记?

pytest: is it possible to enable a marker from code?

在调用 pytest 时使用 -m 参数可以仅 运行 由特定标记标记的测试。

例如pytest -m testsubset_a.

我想知道...是否也可以从代码内部启用这些标记之一?例如pytest_collection_modifyitems()期间的某处?

我问的原因是因为我正在开发一个测试工具,它将使用 pytest 标记来启用特定的测试子集,但过去没有这样做。因为我们想要向后兼容,所以我想在没有给出 -m 参数时启用默认子集(标记)。

您可以使用 config.option.markerexpr.

从代码内部轻松访问传递给 -m 的标记

所以...当没有传递任何选项时默认设置就像

一样简单
def pytest_collection_modifyitems(config):
    if config.option.markerexpr == "":
        config.option.markerexpr == "mydefaultmarker"