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进阶教程之文本文件的读取和写入
Aug 29 Python
python中的hashlib和base64加密模块使用实例
Sep 02 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
python 实用工具状态机transitions
Nov 21 Python
Python将CSV文件转化为HTML文件的操作方法
如何使用Tkinter进行窗口的管理与设置
Python 语言实现六大查找算法
详解MindSpore自定义模型损失函数
教你用python实现12306余票查询
python实现简易自习室座位预约系统
如何用Python搭建gRPC服务
You might like
php 执行系统命令的方法
2009/07/07 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
PHP实现简单登录界面
2019/10/23 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
学生会竞选自荐信
2013/10/12 职场文书
QA工程师岗位职责
2013/11/20 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
六年级学生评语
2014/04/22 职场文书
党员教师一句话承诺
2014/05/30 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
Java Spring Lifecycle的使用
2022/05/06 Java/Android