pytest-skip跳过测试用例

前言:

  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

posted @ 2022-04-22 11:08  平行时空的旅者  阅读(254)  评论(0编辑  收藏  举报