Pytest中skip和skipif的具体使用方法


Posted in Python onJune 30, 2021

skip的用法

使用示例:@pytest.mark.skip(reason="跳过的原因,会在执行结果中打印")

标记在测试函数中

举个?

import pytest


def test_1():
    print("测试用例1")


@pytest.mark.skip(reason="没写完,不执行此用例")
def test_2():
    print("测试用例2")

执行结果如下:

Pytest中skip和skipif的具体使用方法

标记在测试类的测试用例中

举个?

import pytest

class TestCase(object):
    def test_1(self):
        print("测试用例1")


    @pytest.mark.skip(reason="没写完,不执行此用例")
    def test_2(self):
        print("测试用例2")

执行结果如下

Pytest中skip和skipif的具体使用方法

标记在测试类方法上

举个?

import pytest


@pytest.mark.skip(reason="没写完,不执行此用例")
class TestCase1(object):
    def test_1(self):
        print("测试用例1")

    def test_2(self):
        print("测试用例2")


class TestCase2(object):
    def test_3(self):
        print("测试用例3")

    def test_4(self):
        print("测试用例4")

执行结果如下

Pytest中skip和skipif的具体使用方法

总结

  • @pytest.mark.skip 可以加在函数上,类上,类方法上
  • 如果加在类上面,则类里面的所有测试用例都不会执行

在测试用例执行期间强制跳过

以一个for循环为例,执行到第3次的时候跳出

import pytest

def test_demo():
    for i in range(50):
        print(f"输出第【{i}】个数")
        if i == 3:
            pytest.skip("跑不动了,不再执行了")

执行结果如下

Pytest中skip和skipif的具体使用方法

在模块级别跳过测试用例

语法:pytest.skip(msg="",allow_module_level=False)

allow_module_level=True时,可以设置在模块级别跳过整个模块

import pytest

pytest.skip("跳过整个模块", allow_module_level=True)

@pytest.fixture(autouse=True)
def test_1():
    print("执行测试用例1")

def test_2():
    print("执行测试用例2")

执行结果如下

Pytest中skip和skipif的具体使用方法

有条件的跳过某些用例

语法:@pytest.mark.skipif(condition, reason="")

import sys
import pytest


@pytest.mark.skipif(sys.platform == 'darwin', reason="does not run on MacOS")
class TestSkipIf(object):
    def test_demo(self):
        print("不能在MacOS上运行")

注意:condition需要返回True才会跳过

执行结果如下:

Pytest中skip和skipif的具体使用方法

跳过标记的使用

  • 可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量
  • 在不同模块之间共享这个标记变量
  • 若有多个模块的测试用例需要用到相同的 skip 或 skipif ,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集

举个?

import sys
import pytest

skipmark = pytest.mark.skip(reason="不执行此用例")
skipifmark = pytest.mark.skipif(sys.platform == 'darwin', reason="does not run on MacOS")


@skipifmark
class TestSkipIf(object):
    def test_demo(self):
        print("不能在MacOS上运行")


@skipmark
def test_1():
    print("测试用例1")


def test_2():
    print("测试用例2")

执行结果如下

Pytest中skip和skipif的具体使用方法

当缺少某些导入时跳过用例

语法:

pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )

参数:

  • modname: 需要被导入的模块名称,比如 selenium;
  • minversion: 表示需要导入的最小的版本号,如果该版本不达标,将会打印出报错信息;
  • reason: 只有当模块没有被导入时,给定该参数将会显示出给定的消息内容

找不到对应module

举个?

import pytest
rock = pytest.importorskip("rock")

@rock
def test_1():
    print("测试是否导入了rock模块")

运行结果

Pytest中skip和skipif的具体使用方法

如果版本不达标

举个?

import pytest
sel = pytest.importorskip("selenium", minversion="3.150")

@sel
def test_1():
  	print("测试是否导入了selenium模块")

运行结果

Pytest中skip和skipif的具体使用方法

整理参考

小菠萝的测试笔记

到此这篇关于Pytest中skip和skipif的具体使用方法的文章就介绍到这了,更多相关skip和skipif的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python正则表达式介绍
Aug 06 Python
Python 的描述符 descriptor详解
Feb 27 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
【python】matplotlib动态显示详解
Apr 11 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Python适配器模式代码实现解析
Aug 02 Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 Python
python eventlet绿化和patch原理
Nov 21 Python
Python读写锁实现实现代码解析
Nov 28 Python
python中的random模块和相关函数详解
Apr 22 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
javascript如何创建对象
2016/08/29 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
python实现DES加密解密方法实例详解
2015/06/30 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python生成特定分布数的实例
2019/12/05 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
学生个人的自我评价分享
2013/11/05 职场文书
养殖行业的创业计划书
2014/01/05 职场文书
内勤主管岗位职责
2014/04/03 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
感恩之星事迹材料
2014/05/03 职场文书
品质口号大全
2014/06/17 职场文书
小学中等生评语
2014/12/29 职场文书
感谢信怎么写
2015/01/21 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
2019财务毕业实习报告
2019/06/27 职场文书