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
有关-r选项的更多详细信息,请运行pytest -h
# coding:utf-8
import pytest
def test_a():
assert "a" in "ab"
@pytest.mark.skip(reason="no env,can't test")
def test_b():
assert "c" in "ab"
if __name__=="__main__":
pytest.main(["-s","test_fix1.py"])
运行结果:
有时您可能需要跳过整个文件或目录,例如,如果测试依赖于特定于Python的版本功能或包含您不希望pytest运行的代码。在这种情况下,您必须排除文件或目录来自收藏。