在执行测试用例时,有些用例可能不需要执行,这时可以用skip来跳过用例:
1、skip 始终跳过该测试用例
如下三个用例,标记用例2不执行
import pytest def test_001(): assert 1 == 1 @pytest.mark.skip(reason="此条用例暂不执行") def test_002(): assert 1 == 1 def test_003(): assert 1 == 1
执行 pytest -vrs,结果如下:
如上,使用skip装饰器标记是跳过测试用例的最简单方法。
也可以在测试执行或setup期间,通过调用pytest.skip(reason)函数强制跳过该用例:
def test_function(): if not valid_config(): pytest.skip("不支持该配置")
还可以在模块级别跳过整个模块:pytest.skip(reason,allow_module_level=True)
import sys import pytest if not sys.platform.startswith("win"): pytest.skip("跳过只支持Windows平台的用例",allow_module_level=True)
2、skipif 指定条件下跳过测试用例
满足指定条件时则跳过用例的执行,如下当Python版本小于3.9时跳过测试用例
import pytest import sys @pytest.mark.skipif(sys.version_info < (3, 9), reason="需要Python3.9版本以上") def test_002(): assert 1 == 1
注意:skipif方法必须指定reason,否则会报错
我们还可以定义一个变量,根据变量返回为True或False来判断是否跳过用例,如下:
import pytest import sys minversion = pytest.mark.skipif( sys.version_info < (3, 9), reason="需要Python3.9版本以上" ) @minversion def test_002(): assert 1 == 1
在另一个文件中还可以导入这个变量来重复引用
from api.test_case import minversion @minversion def test_003(): assert 5 == 5
跳过整个文件的所有测试用例
import pytest import sys # 当前文件下的测试用例需要满足这个条件才能被执行 pytestmark = pytest.mark.skipif(sys.version_info < (3, 9), reason="需要Python3.9版本以上") def test_001(): assert 1 == 1 def test_002(): assert 8 == 8