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 相关文章推荐
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
Django框架使用mysql视图操作示例
May 15 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
python实现用户名密码校验
Mar 18 Python
Python面向对象实现方法总结
Aug 12 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
Python实现一个论文下载器的过程
Jan 18 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
基于PyQt5制作一个群发邮件工具
Apr 08 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
使用PHP生成PDF方法详解
2015/01/23 PHP
php检测url是否存在的方法
2015/04/14 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
PHP attributes()函数讲解
2019/02/03 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
jquery 问答知识整理
2010/02/11 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
python运行其他程序的实现方法
2017/07/14 Python
Python模拟三级菜单效果
2017/09/11 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
在Python中使用Neo4j的方法
2019/03/14 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
关于逃课的检讨书
2014/01/23 职场文书
大学生活动策划方案
2014/02/10 职场文书
鉴定评语大全
2014/05/05 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
语文教师个人工作总结
2015/02/06 职场文书