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 相关文章推荐
CentOS中使用virtualenv搭建python3环境
Jun 08 Python
独特的python循环语句
Nov 20 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
Python选择网卡发包及接收数据包
Apr 04 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
Django 用户认证组件使用详解
Jul 23 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
php错误日志简单配置方法
2016/07/11 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
django的csrf实现过程详解
2019/07/26 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
详解Python IO口多路复用
2020/06/17 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
幼儿园家长安全责任书
2014/07/22 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Python数据结构之队列详解
2022/03/21 Python