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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
python中的字典详细介绍
Sep 18 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
python如何从文件读取数据及解析
Sep 19 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python try except finally资源回收的实现
Jan 25 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Python 中的Sympy详细使用
Aug 07 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php经典算法集锦
2015/11/14 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
js Math 对象的方法
2013/09/01 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
浅析Bootstrap表格的使用
2016/06/23 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python语言元素知识点详解
2019/05/15 Python
python多线程下信号处理程序示例
2019/05/31 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
浅析Django中关于session的使用
2019/12/30 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
法制报告会主持词
2014/04/02 职场文书
2014年客房部工作总结
2014/11/22 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang