测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Pytest----内置标签skip和skipif的使用方法
收藏本文
作者:redrose2100 类别: 日期:2022-09-02 08:29:51 阅读:734 次 消耗积分:0 分
[TOC] ![](https://redrose2100.oss-cn-hangzhou.aliyuncs.com/img/7cd47362-951c-11ee-986a-0242ac110004.png) 在pytest中markers是用来给测试脚本增加标记的,pytest提供了一些内置的标签,下面针对常用的几个标签做详细的讲解。 # 一、skip的用法 skip标签主要用与跳过执行,比如针对一个功能自动化测试脚本已经实现了,但是产品中此功能尚未实现,如果此时执行此用例,则没有什么意义,此时就可以通过skip将当前脚本标记为跳过,skip针对测试函数的用法如下,括号中的reason可以填写原因。 ```python import pytest @pytest.mark.skip(reason="功能尚未实现,待实现后再运行") def test_func(): assert 1==1 ``` 执行结果如下,可以发现pytest并未执行当前脚本,而是把当前脚本标记为skip,并且在报告中显示为skip状态。 ```bash $ pytest ========================================================================= test session starts ========================================================================== platform win32 -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 rootdir: D:\redrose2100-book\ebooks\Pytest企业级应用实战\src collected 1 item test_demo.py s [100%] ========================================================================== 1 skipped in 0.01s ========================================================================== ``` 在测试函数中使用装饰器跳过的时候整个测试函数都不会执行,在某一些情况下,测试函数内容比较多,希望在执行的过程中检测一些条件,如果条件不满足就跳过后面的测试代码,此时即需要在测试函数中使用skip来跳过测试函数的部分代码,如下测试代码,判断如果当前系统时windows系统,则停止执行,并跳过后面的测试代码并将当前脚本标记为skip状态。 ```python import pytest import platform def test_func(): print("begin to test...") if platform.system() == "Windows": pytest.skip("不支持windows") print("end of test") ``` 在windows上执行结果如下,可以发现在判断条件之前的打印是执行了,当判断条件之后就停止执行并跳过后面的测试代码了,条件判断之后的打印并未执行,并且测试报告中梁当前脚本标记为skip状态。 ```bash $ pytest -s ========================================================================= test session starts ========================================================================== platform win32 -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 rootdir: D:\redrose2100-book\ebooks\Pytest企业级应用实战\src collected 1 item test_demo.py begin to test... s ========================================================================== 1 skipped in 2.27s ========================================================================== ``` 此外,在某些场景下,比如想在一定条件下,整个测试文件中的测试脚本全部跳过不执行,此时就可以采用如下的方式,即直接在测试文件中使用pytest.skip进行标记。 ```python import sys import pytest if sys.platform.startswith("win"): pytest.skip("不支持windows", allow_module_level=True) def test_func1(): assert 1 == 1 def test_func2(): assert 1 == 1 def test_func3(): assert 1 == 1 ``` 执行结果如下,此时它并不会去识别当前用例中有多少个用例,而是直接全部跳过,在测试报告中也只是标记为skip状态。 ```bash $ pytest ========================================================================= test session starts ========================================================================== platform win32 -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 rootdir: D:\redrose2100-book\ebooks\Pytest企业级应用实战\src collected 0 items / 1 skipped ========================================================================== 1 skipped in 2.10s ========================================================================== ``` 当希望将一个类中的所有测试方法全部跳过,此时只需要在类上使用装饰进行skip标记即可,如下: ```python import pytest @pytest.mark.skip class TestDemo: def test_func1(self): assert 1==1 def test_func2(self): assert 1==1 ``` 执行结果如下,此时会识别到一共有多少个用例未执行。 ```bash $ pytest ========================================================================= test session starts ========================================================================== platform win32 -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 rootdir: D:\redrose2100-book\ebooks\Pytest企业级应用实战\src collected 2 items test_demo.py ss [100%] ========================================================================== 2 skipped in 0.12s ========================================================================== ``` # 二、skipif的用法 skipif功能跟skip类似,都是对测试脚本做skip标记,然后不会执行,不同点是skipif可以直接设置跳过条件,当条件为真时,直接跳过,如下,可以直接在第一个参数中设置跳过条件。 ```python import pytest import platform @pytest.mark.skipif(platform.system() == "Windows", reason="不支持window平台") def test_func(): assert 1 == 1 ``` 执行结果如下. ```bash $ pytest ========================================================================= test session starts ========================================================================== platform win32 -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 rootdir: D:\redrose2100-book\ebooks\Pytest企业级应用实战\src collected 1 item test_demo.py s [100%] ========================================================================== 1 skipped in 2.18s ========================================================================== ``` 同样,对于一个类跳过类中的所有的测试方法时,直接在类上使用装饰器即可,代码如下,这里只演示skipif在类上的用法,不在一一执行了。 ```python import pytest import platform @pytest.mark.skipif(platform.system()=="Windows",reason="不支持window平台") class TestDemo(): def test_01(self): assert 1==1 def test_02(self): ``` 对于将一个测试文件中所有测试函数和测试方法都跳过时,只需要按照如下的方式使用即可 ```python import pytest import platform pytestmark = pytest.mark.skipif(platform.system()=="Windows",reason="不支持window平台") def test_01(): assert 1==1 def test_02(): assert 2==2 ```
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/363
上一篇:
Pytest----如何重写断言assert语句的报错信息
下一篇:
Golang基础----Golang中的变量
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件