前言

作为一个java党,我还是觉得pytest和testng很像,有时候真的会感觉到代码语言在某种程度上是相通的,那么今天来说说这两个知识点。

skipskipif,见名知意,就是跳过测试呗,直白的说就是用于不想执行的代码,标记后,标记的代码不执行。

skip的用法

使用示例:@pytest.mark.skip(reason="不想执行的原因,执行时会输出reason内容")

1、标记在函数方法上

示例代码如下:

# 标记在函数上
@pytest.mark.skip(reason="标记在函数上,被标记函数不会被执行!!")
def test_case2():
print("我是测试用例2,但我不会执行")

运行结果如下:

2、标记在类中的函数方法上

示例代码如下:

class TestClass1(object):

    def test_case3(self):
print("我是用例3") # 标记在类中的函数上
@pytest.mark.skip(reason="标记在类中的函数上,同样也不会执行哦!")
def test_case4(self):
print("我是测试用例4,但我不会执行")

运行结果如下:

3、标记在类上

示例代码如下:

@pytest.mark.skip(reason="标记在类上,整个类及类中的方法都不会执行!")
class TestClass2(object):
def test_case5(self):
print("我是用例5")

运行结果如下:

小结:

  • @pytest.mark.skip 可以加在函数上,类上,类方法上
  • 如果加在类上面,类里面的所有测试用例都不会执行

4、在测试用例执行期间强制跳过

以简单的for循环为例,执行到第三个的时候,跳出,示例代码如下:

def test_case6():
for i in range(50):
print(f"输出第 【{i}】个数")
if i == 3:
pytest.skip("我跑不动了,不输出了")

运行结果如下:

总结:

可以理解为这时的跳过测试就和循环的break一样,这时不再用注解的形式了。

5、在模块级别跳过测试

语法:pytest.skip(msg="",allow_module_level=False),当 allow_module_level=True 时,可以设置在模块级别跳过整个模块,示例代码如下:

# -*- coding: utf-8 -*-
# @Time : 2020/11/12 20:30
# @Author : longrong.lang
# @FileName: test_skip.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import sys import pytest if sys.platform.startswith("win"):
pytest.skip("当 allow_module_level=True 时,可以设置在模块级别跳过整个模块",allow_module_level=True) @pytest.fixture(autouse=True)
def dataTable():
print("数据初始化成功") def test_case1():
print("我是用例1")

运行结果如下:

6、希望有条件地跳过某些测试用例

语法:@pytest.mark.skipif(条件表达式, reason="")

示例代码如下:

@pytest.mark.skip(sys.platform.startswith("win"),reason="windows系统不执行哦")
def test_case7():
print("我是用例6")

运行结果如下:

7、跳过标记的使用

好处

  • 方便用例的统一管理维护
  • 可在不同模块标记

需要将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量,用变量(注解变量)进行标记,示例代码如下:

skip = pytest.mark.skip("skip的标记变量,标记的函数或类不执行")
skipif = pytest.mark.skipif("skipif的标记变量,标记的函数或类不执行") @skip
def test_case8():
print("测试用例8") class TestClass(object):
@skipif
def test_case9(self):
print("测试用例9")

运行结果如下:

8、缺少某些导入跳过的测试

语法:pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )

参数列表

  • modname:模块名
  • minversion:版本号
  • reasone:跳过原因,默认不给也行

示例代码如下:

importskip = pytest.importorskip("importskip", minversion="0.3",reason="此处是导入失败,跳过的测试")

@importskip
def test_10():
print('测试用例10')

运行结果如下:

系列参考文章:

https://www.cnblogs.com/poloyy/category/1690628.html

Pytest学习(七) - skip、skipif的使用的更多相关文章

  1. Pytest学习笔记7-skip和skipif的使用

    前言 在实际的测试中,我们经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试 下面我们就来通过一些例子看看skip和ifskip具体如何使用吧 skip的用法 使 ...

  2. httprunner学习20-跳过用例skip/skipIf/skipUnless

    前言 在实际工作中,我们有时候会需要对测试用例加判断,比如某个接口功能暂时去掉了,我们希望对这个用例skip不去执行. 当其它的接口依赖于登陆接口返回的token时候,如果登陆都失败了,后面的接口,我 ...

  3. pytest八:skip 跳过用例

    这是一个快速指南,介绍如何在不同情况下跳过模块中的测试1.无条件地跳过模块中的所有测试:pytestmark = pytest.mark.skip("all tests still WIP& ...

  4. [转载]pytest学习笔记

    pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...

  5. MyBatis学习七:spring和MyBatis整合

    <\mybatis\day02\16mybatis和spring整合-sqlSessionFactory配置.avi;> MyBatis学习七:spring和MyBatis整合.逆向工程 ...

  6. SVG 学习<七> SVG的路径——path(1)直线命令、弧线命令

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  7. day 85 Vue学习七之vue-cookie

      Vue学习七之vue-cookie   通过vue如何操作cookie呢 参考链接:https://www.jianshu.com/p/535b53989b39 第一步:安装vue-cookies ...

  8. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  9. Pytest学习(三) - setup和teardown的使用

    一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...

随机推荐

  1. 【手摸手,带你搭建前后端分离商城系统】01 搭建基本代码框架、生成一个基本API

    [手摸手,带你搭建前后端分离商城系统]01 搭建基本代码框架.生成一个基本API 通过本教程的学习,将带你从零搭建一个商城系统. 当然,这个商城涵盖了很多流行的知识点和技术核心 我可以学习到什么? S ...

  2. 网络IO模型-异步选择模型(Delphi版)

    其实关于这个模型,网络上也有一个案例说明 老陈使用了微软公司的新式信箱.这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此,老陈再也不必频繁上下楼检查信箱了, ...

  3. MeteoInfoLab脚本示例:TOMS HDF数据

    TOMS (Total Ozone Mapping Spectrometer)数据是全球臭氧观测.脚本程序: #Add data file folder = 'D:/Temp/hdf/' fns = ...

  4. Android开发Settings源码分析之主界面加载(二)

    现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套[Android进阶学习视频].[全套Android面试秘籍].[Android知识点PDF] ...

  5. ORM查询相关的操作

    必知必会13条 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_practice.setti ...

  6. spring boot:使接口返回统一的RESTful格式数据(spring boot 2.3.1)

    一,为什么要使用REST? 1,什么是REST? REST是软件架构的规范体系,它把资源的状态用URL进行资源定位, 以HTTP动作(GET/POST/DELETE/PUT)描述操作 2,REST的优 ...

  7. 第十章 nginx常用配置介绍

    一.虚拟主机 1.配置方式 #虚拟主机配置方式:1.基于多IP的方式2.基于多端口的方式3.基于多域名的方式 2.方式一:基于多IP的方式 1.第一个配置文件[root@web02 /etc/ngin ...

  8. Helium文档15-WebUI自动化-chromedriver问题

    前言 helium库是自带chromedriver的,我们怎么来查看在哪里呢? 目录介绍 用我的电脑上的路径打比方如下: D:\Program Files (x86)\Python38\Lib\sit ...

  9. 两分钟搞定VS下第三方库的配置(以GNU Regex Library库为例)

    写C的朋友大概知道导入一个库的痛苦,特别是在宇宙第一IDE--VS下更是无从下手,生怕一不小心就把VS搞崩了,而VS的卸载过程又是一个十分头疼的过程.所以,这里特此开了一篇如何在VS下配置第三方库的博 ...

  10. Jmeter入门(6)- 参数化

    一.什么是参数化 为什么要参数化? 在发送大量的请求时,键对值是写死的,每次请求都需要去修改,无法实现快速添加的需求.想要快速实现该需求,就需要用到参数化. 什么是参数化? 根据需求动态获取数据并进行 ...