skip跳过用例:
跳过意味着你希望只在满足某些条件时测试才能通过,否则pytest应该跳过该测试。
常见的例子是跳过非windows平台上的仅windows测试,或者跳过依赖于当前不可用的外部资源(例如数据库)的测试。
# File : test_demo_15.py # IDE : PyCharm import pytest a = 4 b = [4, 5, 6] c = 4 d = 0 # 1)最简单用法,用skip装饰器进行标记,@pytest.mark.skip(reason=''),传递reason说明原因 @pytest.mark.skip(reason="no way of currently testing this") def test_1(): assert a <= c, '断言出错' # 2)调用 pytest.skip(reason) 函数在执行阶段或配置初始参数阶段跳过 def test_2(): if True: pytest.skip("初始参数配置不满足") # # 3)跳过整个模块的测试用例 # pytest.skip("我要跳过这个模块的用例", allow_module_level=True) # 可配合某个条件,满足条件则跳出模块执行(操作系统为 windows 时,跳过整个模块 import sys if sys.platform.startswith("win"): pytest.skip("windows不适用此模块的用例", allow_module_level=True) # 4)用 skipif 装饰器进行标记,@pytest.mark.skipif(expression, reason=''),使用 pytest -rs 查看 reason # expression 支持所有的 Boolean 运算,为 True 则执行 skip # 下面标记在 python3.8 之后的版本运行时,跳过测试 import sys @pytest.mark.skipif(sys.version_info > (3, 8), reason="requires python3.9 or higher") def test_3(): assert a is c, '断言出错' # 重点: # 1:pytest 建议使用一个文件单独保存标记,然后整个套件中调用这些标记 config = pytest.mark.skipif(...) # 2:无条件跳过模块所有测试 pytestmark = pytest.mark.skip("全部跳过") # 3:带条件跳过模块所有测试 pytestmark = pytest.mark.skipif(sys.platform == "win32", reason="windows跳过") # 4:缺少某个模块 pexpect = pytest.importorskip("pexpect", minversion="0.3") # pexpect 模块名
# ----pytestmark
全局标记
def test_4(): assert a in b, '断言出错' if __name__ == '__main__': pytest.main(['-s', '-q', 'test_demo_15.py'])
更多关于 skip的用法,见官方文档: https://docs.pytest.org/en/latest/skipping.html