pytest.mark.skip
可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能
skip
意味着只有在满足某些条件时才希望测试通过,否则pytest
应该跳过运行测试。 常见示例是在非Windows平台上跳过仅限Windows的测试,或跳过测试依赖于当前不可用的外部资源(例如数据库)。
xfail
意味着您希望测试由于某种原因而失败。 一个常见的例子是对功能的测试尚未实施,或尚未修复的错误。 当测试通过时尽管预计会失败(标有pytest.mark.xfail),它是一个xpass,将在测试摘要中报告。
pytest计数并分别列出skip和xfail测试。 未显示有关跳过/ xfailed测试的详细信息默认情况下,以避免混乱输出。 您可以使用-r选项查看与“short”字母对应的详细信息显示在测试进度中;
pytest -rxXs # show extra info on xfailed, xpassed, and skipped tests
@pytest.mark.skip()
如果我们想要跳过某条用例,我们可以直接用@pytest.mark.skip()标签来装饰该用例。
我们在要跳过的测试用例上加上@pytest.mark.skip()标签,可以选择传入一个非必须参数reason表示原因
。需要说明的是我们在pytest.main()方法中新加了一个参数"-r",他可以显示出每个用例的简短的执行结果
import pytest
@pytest.mark.skip(reason="就是不想执行而已")
def test_one():
print("test_one方法执行" )
assert 1==1
def test_two():
print("test_two方法执行" )
assert "o" in "love"
def test_three():
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','test_skipDemo01.py'])
运行结果:
est_skipDemo01.py::test_one SKIPPED [ 33%]
Skipped: 就是不想执行而已
test_skipDemo01.py::test_two PASSED [ 66%]test_two方法执行
test_skipDemo01.py::test_three PASSED [100%]test_three方法执行
======================== 2 passed, 1 skipped in 0.03s =========================
@pytest.mark.skipif()
其实看到了标签我们就已经猜到了它是根据某个条件来判断是否跳过该用例,如果该条件的返回值是True便跳过。
我们在要判断是否要跳过的测试用例上添加@pytest.mark.skipif()标签;传入condition参数,也就是判断条件
,该参数是必须参数;可以选择传入非必须参数reason:跳过的原因;如果多个标签一起使用,满足其中一个跳过条件则会跳过该用例。