使用pytest,可以使用装饰器标记测试
@pytest.mark.slow
def some_slow_test():
pass
Run Code Online (Sandbox Code Playgroud)
然后,从命令行,可以告诉pytest跳过标记为"慢"的测试
pytest -k-slow
Run Code Online (Sandbox Code Playgroud)
如果我有一个额外的标签:
@pytest.mark.long
def some_long_test()
pass
Run Code Online (Sandbox Code Playgroud)
我希望能够跳过长期和慢速测试.我试过这个:
pytest -k-slow -k-long
Run Code Online (Sandbox Code Playgroud)
还有这个:
pytest -k-slow,long
Run Code Online (Sandbox Code Playgroud)
似乎都不起作用.
在命令行中,如何告诉pytest跳过慢和长测试?
hpk*_*k42 56
此外,最近添加了"-m"命令行选项,您应该能够编写:
py.test -m "not (slow or long)"
Run Code Online (Sandbox Code Playgroud)
IOW,"-m"选项接受一个表达式,该表达式可以使用标记作为布尔值(如果测试函数上不存在标记,则其值为False,如果存在,则为True).
JS.*_*JS. 13
通过pytest代码(mark.py)和进一步的实验看,以下似乎工作:
pytest -k "-slow -long"
Run Code Online (Sandbox Code Playgroud)
(使用该--collect-only选项加速实验)
也可以堆叠标记装饰器.
@pytest.mark.slow
@pytest.mark.main
def test_myfunction():
pass
Run Code Online (Sandbox Code Playgroud)
然后我打电话py.test -m "slow and main",只调用两个装饰器的测试.
py.test -m "not (slow and main)" 导致其他测试运行