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 获取本机ip地址的两个方法
Feb 25 Python
python写日志封装类实例
Jun 28 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
python 修改本地网络配置的方法
Aug 14 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
Python tkinter和exe打包的方法
Feb 05 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
python中Django文件上传方法详解
Aug 05 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
Jan 24 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
python处理html转义字符的方法详解
2016/07/01 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python中安装easy_install的方法
2018/11/18 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
python设置中文界面实例方法
2020/10/27 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
链表面试题-一个链表的结点结构
2015/05/04 面试题
毕业生医学检验求职信
2013/10/16 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
客户答谢会活动方案
2014/08/31 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
清明节主题班会
2015/08/14 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书