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登录Gmail并发送Gmail邮件的教程
Apr 17 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
Python处理文本换行符实例代码
Feb 03 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
numpy下的flatten()函数用法详解
May 27 Python
python监控nginx端口和进程状态
Sep 06 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python socket处理client连接过程解析
Mar 18 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
Python logging模块handlers用法详解
Aug 14 Python
详细总结Python常见的安全问题
May 21 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
windows下ipython的安装与使用详解
2016/10/20 Python
使用Python写CUDA程序的方法
2017/03/27 Python
python中学习K-Means和图片压缩
2017/11/20 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
Python列表对象实现原理详解
2019/07/01 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python实现飞行棋游戏
2020/02/05 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
Django权限控制的使用
2021/01/07 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
工作疏忽检讨书
2014/01/25 职场文书
学习十八大报告感言
2014/02/28 职场文书
疾病捐款倡议书
2014/05/13 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
兵马俑导游词
2015/02/02 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android