一、前言
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
二、skip
跳过测试函数的最简单方法是使用跳过装饰器标记它,可以传递一个可选的原因
@pytest.mark.skip(reason="no way of currently testing this")
def test_the_unknown():
...
或者,也可以通过调用来在测试执行或设置期间强制跳过pytest.skip(reason)功能:
def test_function():
if not valid_config():
pytest.skip("unsupported configuration"