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 实现删除文件或文件夹实例详解
Dec 04 Python
python模块之re正则表达式详解
Feb 03 Python
Python中类的初始化特殊方法
Dec 01 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
用Zend Encode编写开发PHP程序
2010/02/21 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
JavaScript Prototype对象
2009/01/07 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
js实现录音上传功能
2019/11/22 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
医院护士的求职信范文
2013/12/26 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
大宝sod蜜广告词
2014/03/21 职场文书
销售竞赛活动方案
2014/08/23 职场文书
建国大业观后感
2015/06/01 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs