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中用max()方法求最大值的介绍
May 15 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
django 将model转换为字典的方法示例
Oct 16 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
python scp 批量同步文件的实现方法
Jan 03 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
react build 后打包发布总结
2018/08/24 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
Python中scatter函数参数及用法详解
2017/11/08 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
采购部长岗位职责
2014/06/13 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js
python神经网络ResNet50模型
2022/05/06 Python