前言:
pytest.mark.skip 可以标记无法再某些平台上运行的测试功能,或者你希望失败的测试功能,skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过测试。常见示例实在非windows平台上跳过仅限windows的测试,或者跳过测试依赖于当前不可用的外部资源(如数据库)。
xfail 的含义是:将该用例标记为xfail失败,并且该用例中的后续代码不会执行。
@pytest.mark.xfail
出来pytest.fail(),xfail还有一种使用方法。就是@pytest.mark.xfail标签,他的含义是:期望测试用例执行失败,但不会影响测试用例的执行。如果测试用例执行是失败的,则结果是xfail;如果测试用例执行成功,则结果是xpass。
pytest计数并分别列出skip和xfail测试。未显示有关跳过/xfailed测试的详细信息,以免混乱输出。您可以使用-r 选项查看与 “short”字母对应的详细信息显示在测试进度中。
skip:
跳过测试函数的最简单方法是使用跳过装饰器标记它,可以传递一个可选的原因:
跳过模块中的所有方法:
在全局中使用 pytest.mark.skip()
--skipif--:
如果希望有条件的跳过某些内容,则可以使用skipif()代替。这是标记测试的示例在python3.6之前的解释器上运行时要跳过的函数。
1
2
3
4
5
6
7
8
9
|
@pytest .mark.skipif((f()> 4 ),reason = "当f()大于4时执行跳过" ) def test_02(): """ 断言b包含a :return: """ a = "hello" b = "hello world" assert a in b, "判断b是否包含a,a= %s b = %s " |
如果skipif()中的条件为True时,则将跳过测试函数,具体的原因使用reason中出现的摘要
在模块之间共享skipif标记,参考一下案例:skipif() 中必须要加条件和reason
skip类或者模块:
可以在类上使用skipif标记与其他任何标记的使用方法一样
警告:强烈建议不要在使用继承的类上使用skipif. pytest中的一个已知错误标记可能会导致超类中的意外行为;
如果多个skipif()装饰器应用于测试函数,则如果任何跳过条件为真,则将跳过它。
skip 文件或目录:
有时候可能需要跳过整个文件或目录,例如,如果测试依赖于特定的Python的版本功能或者包含不希望运行的代码。在这种情况下,需要排除文件和目录。
如何在不同情况下跳过模块中的测试
1、无条件的跳过模块中的所有测试:
pytestmark = pytest.mark.skip("all tests will wip")
2、根据某些条件跳过模块中的所以偶测试
pytestmark = pytest.mark.skipif((sys.platform=='win32"),reason = 'test for linux only')
3、如果缺少某些导入,则跳过模块中的所有测试
pexpect = pytest.importskip()
----------------------------------------------------------------------------------------------------------
转载于:https://www.cnblogs.com/1050619969kong/p/15585002.html
作者昵称:GalaxyStar