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类的多重继承问题深入分析
Nov 09 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
在python中使用with打开多个文件的方法
Jan 07 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
python 如何用terminal输入参数
May 25 Python
Python中文纠错的简单实现
Jul 07 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
JQuery从头学起第二讲
2010/07/04 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python 自动提交和抓取网页
2009/07/13 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
业务经理的岗位职责
2013/11/16 职场文书
部队领导证婚词
2014/01/12 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
工作能力自我评价2015
2015/03/05 职场文书
在职证明书模板
2015/06/15 职场文书
python实现监听键盘
2021/04/26 Python
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP