【发布时间】:2020-01-28 05:34:44
【问题描述】:
pytest 有什么方法可以知道从命令行选择了哪些标记?
我有一些标记为“慢”的测试需要大量处理。我只想在标记缓慢被激活的情况下进行治疗。
heavy_var = None
def setup_module(module):
global heavy_var
# Need help here!?
if markers["slow"]:
heavy_var = treatment()
def test_simple():
pass
@pytest.mark.slow():
def test_slow():
assert heavy_var.x == "..."
我如何知道是否选择了慢速标记?当我使用 -m not slow 调用 pytest 时,markers["slow"] 将为 False,否则为 True。
【问题讨论】:
-
不是真的 - 不是来自
setup_module,它是为了与nose和 xUnit 兼容,并且非常有限;不过,您可以用等效的夹具替换它。而不是标记列表/字典 - 只有您从命令行输入的字符串,例如您可以访问not slow字符串。 -
那么,我想做的唯一方法就是使用 sys.argv?
-
sys.argv也只会给你-m字符串arg,所以你必须自己进行解析。 -
如果无法使用 pytest(不解析 argv)进行处理,是否只有在激活某些标记的情况下才能进行处理?
-
哦,当然,这是可能的 - 我太专注于问题标题。让我给你一个例子。
标签: python python-3.x pytest