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 相关文章推荐
用C++封装MySQL的API的教程
May 06 Python
Python自动扫雷实现方法
Jul 25 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
python获取文件路径、文件名、后缀名的实例
Apr 23 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
python关于调用函数外的变量实例
Dec 26 Python
python新式类和经典类的区别实例分析
Mar 23 Python
python神经网络学习 使用Keras进行回归运算
May 04 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
深入理解node.js http模块
2018/01/24 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
jupyter安装小结
2016/03/13 Python
python使用KNN算法手写体识别
2018/02/01 Python
python 读取文件并替换字段的实例
2018/07/12 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
python selenium循环登陆网站的实现
2019/11/04 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
三八妇女节趣味活动方案
2014/08/23 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
入党介绍人意见2015
2015/06/01 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Python实现科学占卜 让视频自动打码
2022/04/09 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL