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时,可以设置在整个模块级别跳过用例