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之??碌某?? target=
Sep 12 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python开发的HTTP库requests详解
Aug 29 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
Python实现多属性排序的方法
Dec 05 Python
Python使用configparser库读取配置文件
Feb 22 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Django vue前后端分离整合过程解析
Nov 20 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 Python
Python天气语音播报小助手
Sep 25 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
PHP 网页过期时间的控制代码
2009/06/29 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
javascript 写类方式之四
2009/07/05 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
python字符串替换的2种方法
2014/11/30 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
What is EJB
2016/07/22 面试题
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
小型女装店的创业计划书
2014/01/09 职场文书
护士医德考评自我评价
2015/03/03 职场文书
党支部季度考核意见
2015/06/02 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis