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的Template使用指南
Sep 11 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python单例模式的两种实现方法
Aug 14 Python
python爬取哈尔滨天气信息
Jul 14 Python
详解Python中的type和object
Aug 15 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
python统计指定目录内文件的代码行数
Sep 19 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
PHP的中问验证码
2006/11/25 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
script标签属性用type还是language
2015/01/21 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
javascript编写简易计算器
2017/05/06 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python中使用中文的方法
2011/02/19 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
在python中使用nohup命令说明
2020/04/16 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
亲子读书活动方案
2014/02/22 职场文书
慰问信模板
2015/02/14 职场文书
专家推荐信范文
2015/03/26 职场文书
休假证明书
2015/06/24 职场文书
教师节大会主持词
2015/07/06 职场文书
2016年记者节感言
2015/12/08 职场文书
高中体育课教学反思
2016/02/16 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书