Pytest跳过测试用例
pytest跳过测试用例:
- 无条件跳过,@pytest.mark.skip(reason="跳过的原因,会在执行结果中打印")
- 有条件跳过,@pytest.mark.skipif(条件表达式,reason="跳过的原因,会在执行结果中打印")
无条件跳过:
- 标记在函数中
import pytest @pytest.mark.skip(reason = "不执行") def test_case1(): print("第一个测试用例") def test_case2(): print("第二个测试用例")注:在函数上方加入@pytest.mark.skip(reason = "不执行")后,该函数不会执行,并且会打印出不执行的原因
- 标记在类的方法中
import pytest class TestCase(object): @pytest.mark.skip(reason="没有完成,不执行") def test_case1(self): print("第一个测试用例") def test_case2(self): print("第二个测试用例") - 标记在类中
import pytest @pytest.mark.skip(reason="这个类的所有不执行") class TestCase1(object): def test_case1(self): print("第一个测试用例") def test_case2(self): print("第二个测试用例") - 标记在模块中,这个py文件都不执行
import pytest pytest.skip(allow_module_level=True) class TestCase1(object): def test_case1(self): print("第一个测试用例") def test_case2(self): print("第二个测试用例") - 在测试期间强制跳过
import pytest def test_dome(): for i in range(20): print(f"第{i}个用例") if i == 5: pytest.skip("跑不动了,不在执行")注:当i为5时,就不会在执行了,直接跳出循环了,与bark相似
有条件的跳过测试用例
注:作用在函数、方法、类、模块中都和无条件跳过测试用例用法一致
语法:@pytest.mark.skipif(条件表达式,reason=“跳过的原因”)
- 案例:当操作系统为win32时,不执行
import pytest import sys @pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行") def test_case1(): print("执行第一个测试用例") def test_case2(): print("执行第一个测试用例")
注:当操作系统为win32时,test_case1不会执行,只有当操作系统不为win32时才会执行test_case1 - 可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量
- 案例:
注:直接用装饰器的方式调用即可import pytest import sys # 不满足条件不执行 markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行") # 直接强制不执行 markskip = pytest.mark.skip("本次不进行测试") @markskip def test_case1(): print("执行第一个测试用例") @markskipif def test_case2(): print("执行第二个测试用例") def test_case3(): print("执行第三个测试用例")
- 案例:
- 若有多个模块的测试用例需要用到相同的 skip 或 skipif ,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集
- 案例:把标记的单独写一个文件
标记文件
测试用例import pytest import sys # 不满足条件不执行 markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行") # 直接强制不执行 markskip = pytest.mark.skip("本次不进行测试")from scripts.metting import markskip,markskipif @markskip def test_case1(): print("执行第一个测试用例") @markskipif def test_case2(): print("执行第二个测试用例") def test_case3(): print("执行第三个测试用例")注:把标记单独放在一个文件中,测试用例中如果需要用到直接用装饰器的方式直接调用即可
- 案例:把标记的单独写一个文件
浙公网安备 33010602011771号