Pytest系列(10)- skip、skipif跳过执行用例

前言

从字面意思来理解,就是跳过测试——用于不想执行的代码

用法

例如:@pytest.mark.skip(reason="不想执行的原因,执行时会输出reason内容")

  • pytest.mark.skip使用skip标记用例,可以跳过对应用例的执行
  • pytest.mark.skip可以加在函数、类、方法上

标记在函数方法上

@pytest.mark.skip(reason="我不想执行Test1")
def test1(self):
    print("这里是test case1,但是我不想执行")

执行结果如下:

标记在类上

@pytest.mark.skip(reason="标记在类上,测试类不会被执行哦")
class TestSkip:
    def test1(self):
        print("这里是test case1")

执行结果如下:

在测试期间强行跳过

类似于在循环中,如果满足某些条件,则break跳出循环,举个栗子👇

def test3(self):
    for i in range(1,50):
        print(f"这是第【{i}】次")
        if i == 5:
            pytest.skip("满足条件了,强制停止")

运行结果如下

🐱‍🚀 ATTENTION:

  • 这个时候的skip就可以理解成循环里的break,不需要使用注解的形式

满足条件时跳过skip if

使用方法:@pytest.mark.skipif(条件表达式,reason="")

注意:条件表达式需要为true时,才会跳过

@pytest.mark.skipif(sys.platform == 'win32', reason="不在windows环境上运行")
def test4(self):
    print("这里是test4")

运行结果如下:

跳过标记

可以将@pytest.mark.skip@pytest.mark.skipif赋值给标记变量,然后使用变量进行标记(方便统一管理)

mark_skip = pytest.mark.skip("skip的标记变量,标记的方法不执行")
mark_skipif = pytest.mark.skipif(sys.platform == 'win32', reason="不在windows环境上运行")


@mark_skip
def test2(self):
    print("这里是test case2")

@mark_skipif
class TestSkip:
    def test1(self):
        print("这里是test case1")

    def test3(self):
        for i in range(1,50):
            print(f"这是第【{i}】次")
            if i == 5:
                pytest.skip("满足条件了,强制停止")

    def test4(self):
        print("这里是test4")

运行结果如下:

模块级别跳过用例

  • 使用方法:pytest.skip(msg="",allow_module_level=False)

  • 当allow_module_level为True时,可以设置在整个模块级别跳过用例

posted @ 2021-11-27 18:24  莫伊101  阅读(84)  评论(0编辑  收藏  举报