网站建设 如何友情链接,.net 网站地图,电商商城平台,微信公众号文档简介
skip和skipif#xff0c;见名知意就是跳过测试#xff0c;主要用于不想执行的代码#xff0c;标记后#xff0c;标记的代码不执行。希望满足某些条件才执行某些测试用例#xff0c;否则pytest会跳过运行该测试用例实际常见场景#xff1a;根据平台不同执行测试、跳…简介
skip和skipif见名知意就是跳过测试主要用于不想执行的代码标记后标记的代码不执行。希望满足某些条件才执行某些测试用例否则pytest会跳过运行该测试用例实际常见场景根据平台不同执行测试、跳过依赖、功能未完成预期不能执行的测试
用例跳过方式及实例
1、标记在函数方法上
pytest.mark.skip(reason不执行函数方法)
def test_demo2():print(类外面的测试用例2)2、标记在类中的函数方法上
class TestStudy:def test_one(self):print(类测试用例1)pytest.mark.skip(reason不执行类的函数方法)def test_two(self):print(类测试用例2)3、标记在类上
pytest.mark.skip(reason不想执行)
class Skip:def test_one(self):print(%% 不会执行 %%)1、2、3整体参考示例
import testimport pytestpytest.fixture(autouseTrue)
def login():print(---登录---)def test_demo1():print(类外面的测试用例1)pytest.mark.skip(reason不执行函数方法)
def test_demo2():print(类外面的测试用例2)class TestStudy:def test_one(self):print(类测试用例1)pytest.mark.skip(reason不执行类的函数方法)def test_two(self):print(类测试用例2)pytest.mark.skip(reason不想执行)
class Skip:def test_one(self):print(%% 不会执行 %%)if __name__ __main__:pytest.main()执行结果 小结
pytest.mark.skip 可以加在函数上类上类方法上如果加在类上面类里面的所有测试用例都不会执行
以上小案例都是针对整个测试用例方法跳过执行下面是 在测试用例执行期间强制跳过的小栗子
4、pytest.skip()函数基础使用
作用在测试用例执行期间强制跳过不再执行剩余内容 类似在Python的循环里面满足某些条件则break 跳出循环
以简单的for循环为例执行到第三个的时候跳出参考示例
def test_function():for i in range(50):print(f输出第 【{i}】个数)if i 6:pytest.skip(我跑不动了不输出了)执行结果
5、在模块级别跳过测试
语法pytest.skip(msg,allow_module_levelFalse)当 allow_module_levelTrue 时可以设置在模块级别跳过整个模块示例代码如下
import sys
import pytestif sys.platform.startswith(win):pytest.skip(skipping windows-only tests,allow_module_levelTrue)pytest.fixture(autouseTrue)
def login():print(--- 登录 ---)def test_demo():print(--- 测试用例 ---)执行结果
6、希望有条件地跳过某些测试用例
作用希望有条件地跳过某些测试用例 语法pytest.mark.skipif(condition, reason) 注意condition需要返回True才会跳过
示例代码如下
class TestStudy:def test_one(self):print(类测试用例1)# pytest.mark.skipif(sys.platform win),reasonwindows系统 不执行)
pytest.mark.skipif(sys.platform.startswith(win),reasonwindows系统 不执行)def test_two(self):print(类测试用例2)执行结果
7、跳过标记的使用
好处
方便用例的统一管理维护在不同模块之间共享这个标记变量若有多个模块的测试用例需要用到相同的 skip 或 skipif 可以用一个单独的文件去管理这些通用标记然后适用于整个测试用例集
需要将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量用变量(注解变量)进行标记
#标记
skipmark pytest.mark.skip(reason不能在window上运行)
skipifmark pytest.mark.skipif(sys.platform win32, reason不能在window上运行啦啦啦)skipmark
class TestSkip_Mark(object):skipifmarkdef test_function(self):print(测试标记)def test_def(self):print(测试标记)skipmark
def test_skip():print(测试标记)执行结果 8、缺少某些导入跳过的测试
作用如果缺少某些导入则跳过模块中的所有测试 语法pytest.importorskip( modname: str, minversion: Optional[str] None, reason: Optional[str] None )
参数列表
modname模块名minversion版本号reason跳过原因默认不给也行
# 标记
importskip pytest.importorskip(importskip, minversion0.3,reason不能在 windows系统 执行)importskip
def test_demo():print(测试标记)执行结果
执行结果一如果找不到module
Skipped: could not import pexpect: No module named pexpect
collected 0 items / 1 skipped执行结果一如果版本对应不上
Skipped: module sys has __version__ None, required is: 0.3
collected 0 items / 1 skippe参考文章