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中的二维数组的操作方法
May 02 Python
python获取一组数据里最大值max函数用法实例
May 26 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python绘制3D图形
May 03 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
详解python with 上下文管理器
Sep 02 Python
Python使用MapReduce进行简单的销售统计
Apr 22 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
BBS(php & mysql)完整版(六)
2006/10/09 PHP
PHP4和PHP5共存于一系统
2006/11/17 PHP
PHP EOT定界符的使用详解
2008/09/30 PHP
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
Js动态创建div
2008/09/25 Javascript
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
浅谈django中的认证与登录
2016/10/31 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
简单实现python聊天程序
2018/04/01 Python
python format 格式化输出方法
2018/07/16 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python 实现多维数组转向量
2019/11/30 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
绘画专业自荐信范文
2014/02/23 职场文书
财务总监管理职责范文
2014/03/09 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
毕业典礼邀请函
2015/01/31 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
浅谈Python数学建模之整数规划
2021/06/23 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers