pytest跳过用例skip

pytest支持跳过某些用例来执行测试。

使用pytest.mark.skip来标记,它可以标记无法在某些平台上运行的测试功能,或者希望失败的测试功能。skip意味着只有在满足我们规定的条件时才测试通过,否则pytest应该跳过运行测试。比如测试才非Windows系统上的用例跳过去执行Windows系统的测试,或跳过测试依赖于当前不可用的外部资源,例如数据库。

另外还有参数 xfail,它意味着希望测试由于某种原因而失败。一个场景的例子是对功能的测试尚未实施,或者尚未修复的错误。当测试通过时尽管预计会失败(被标记有pytest.mark.xfail),它是一个xpass,将再测试摘要中报告。

pytest计数并分别列出skip和xfail测试,未显示有关跳过xfail测试的详细信息的默认情况下,以避免混乱输出。可以使用 - r 参数查看与short字母对应的详细信息显示在测试进度中。

 

跳过测试函数最简单的方法是使用跳过装饰器标记他,可以传递一个可选原因: 

@pytest.mark.skip(reason='no way of currently testing this')

  或者可以在通过测试执行,也可以设置期间强制跳过 pytest.skip(reason)功能。

跳过整个模块级别:

import pytest
if not pytest.config.getoption('--custom-flag'):
       pytest.skip('--custom-flag is missng, skipping tests',
                         allow_module_level=True)

  skipf:

              如果希望有条件地跳过某些内容,则可以使用skipf代替。如果条件在收集期间评估为True,则将跳过测试函数,具有指定的原因使用 -rs 时出现在摘要中。可以在模块之间共享skipf标记。

              可以导入标记,并在另一个测试模块中重复使用它:对于较大的测试套件,通常最好有一个文件来定义标记,然后一致适用于整个测试套件。或者使用条件字符串而不是布尔值,但是她们之间不能轻易共享他们,支持他们,原因是处于向后兼容。

 

skip类和模块: 可以在类上使用skipf标记(这与任何其他标记一样)

@pytest.mark.skipif(sys.platform=='win32',
                               reason='does not run on windows')
class TestPosixCalls(object):
def test_function(self):
       "wiil not be setup or run under 'win32' platform"

  如果条件为true,则标记将该类的每个测试方法跳过,如果要跳过模块的所有测试功能可以在全局级别使用标记

      

上一篇:skip-GANomaly复现总结


下一篇:Fanuc 跳过指令 Skip