Pytest系列(7) - skip、skipif跳过用例
如果你还想从头学起Pytest,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1690628.html
前言
- pytest.mark.skip 可以标记无法在某些平台上运行的测试功能,戒者您希望失败的测试功能
- 希望满足某些条件才执行某些测试用例,否则pytest会跳过运行该测试用例
- 实际常见场景:跳过非Windows平台上的仅Windows测试,或者跳过依赖于当前不可用的外部资源(例如数据库)的测试
@pytest.mark.skip
跳过执行测试用例,有可选参数reason:跳过的原因,会在执行结果中打印
#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ =
__Time__ = 2020/4/9 13:49
__Author__ = 小菠萝测试笔记
__Blog__ = https://www.cnblogs.com/poloyy/
"""
import pytest @pytest.fixture(autouse=True)
def login():
print("====登录====") def test_case01():
print("我是测试用例11111") @pytest.mark.skip(reason="不执行该用例!!因为没写好!!")
def test_case02():
print("我是测试用例22222") class Test1: def test_1(self):
print("%% 我是类测试用例1111 %%") @pytest.mark.skip(reason="不想执行")
def test_2(self):
print("%% 我是类测试用例2222 %%") @pytest.mark.skip(reason="类也可以跳过不执行")
class TestSkip:
def test_1(self):
print("%% 不会执行 %%")
执行结果

知识点
- @pytest.mark.skip 可以加在函数上,类上,类方法上
- 如果加在类上面,类里面的所有测试用例都不会执行
- 以上小案例都是针对:整个测试用例方法跳过执行,如果想在测试用例执行期间跳过不继续往下执行呢?
pytest.skip()函数基础使用
作用:在测试用例执行期间强制跳过不再执行剩余内容
类似:在Python的循环里面,满足某些条件则break 跳出循环
def test_function():
n = 1
while True:
print(f"这是我第{n}条用例")
n += 1
if n == 5:
pytest.skip("我跑五次了不跑了")
执行结果

pytest.skip(msg="",allow_module_level=False)
当 allow_module_level=True 时,可以设置在模块级别跳过整个模块
#!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ =
__Time__ = 2020/4/9 13:49
__Author__ = 小菠萝测试笔记
__Blog__ = https://www.cnblogs.com/poloyy/
"""
import sys
import pytest if sys.platform.startswith("win"):
pytest.skip("skipping windows-only tests", allow_module_level=True) @pytest.fixture(autouse=True)
def login():
print("====登录====") def test_case01():
print("我是测试用例11111")
执行结果
collecting ...
Skipped: skipping windows-only tests
collected 0 items / 1 skipped ============================= 1 skipped in 0.15s ==============================
@pytest.mark.skipif(condition, reason="")
作用:希望有条件地跳过某些测试用例
注意:condition需要返回True才会跳过
@pytest.mark.skipif(sys.platform == 'win32', reason="does not run on windows")
class TestSkipIf(object):
def test_function(self):
print("不能在window上运行")
执行结果
collecting ... collected 1 item 07skip_sipif.py::TestSkipIf::test_function SKIPPED [100%]
Skipped: does not run on windows ============================= 1 skipped in 0.04s ==============================
跳过标记
- 可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量
- 在不同模块之间共享这个标记变量
- 若有多个模块的测试用例需要用到相同的 skip 或 skipif ,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集
# 标记
skipmark = pytest.mark.skip(reason="不能在window上运行=====")
skipifmark = pytest.mark.skipif(sys.platform == 'win32', reason="不能在window上运行啦啦啦=====") @skipmark
class TestSkip_Mark(object): @skipifmark
def test_function(self):
print("测试标记") def test_def(self):
print("测试标记") @skipmark
def test_skip():
print("测试标记")
执行结果
collecting ... collected 3 items 07skip_sipif.py::TestSkip_Mark::test_function SKIPPED [ 33%]
Skipped: 不能在window上运行啦啦啦===== 07skip_sipif.py::TestSkip_Mark::test_def SKIPPED [ 66%]
Skipped: 不能在window上运行===== 07skip_sipif.py::test_skip SKIPPED [100%]
Skipped: 不能在window上运行===== ============================= 3 skipped in 0.04s ==============================
pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )
作用:如果缺少某些导入,则跳过模块中的所有测试
参数列表
- modname:模块名
- minversion:版本号
- reasone:跳过原因,默认不给也行
pexpect = pytest.importorskip("pexpect", minversion="0.3")
@pexpect
def test_import():
print("test")
执行结果一:如果找不到module
Skipped: could not import 'pexpect': No module named 'pexpect'
collected 0 items / 1 skipped
执行结果一:如果版本对应不上
Skipped: module 'sys' has __version__ None, required is: '0.3'
collected 0 items / 1 skipped
Pytest系列(7) - skip、skipif跳过用例的更多相关文章
- Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平常在做功能测试的时候,经常 ...
- pytest八:skip 跳过用例
这是一个快速指南,介绍如何在不同情况下跳过模块中的测试1.无条件地跳过模块中的所有测试:pytestmark = pytest.mark.skip("all tests still WIP& ...
- pytest测试框架 -- skip跳过执行测试用例
跳过执行测试用例 1.@pytest.mark.skip(reason=" ") -- 跳过执行测试函数 可传入一个非必须参数reason表示原因 import pytest@ ...
- Pytest(9)skip跳过用例
前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能 Skip和xfail: 处理那些不会成功的测试用例 你可以对那些在某些特定平台上不能运行的测试用 ...
- 跳过用例skip
1.装饰器,放在函数前面,跳过用例 @pytest.mark.skip(reason="no way of currently testing this") import pyte ...
- 【pytest系列】- pytest测试框架介绍与运行
如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html 前言 目前有两种纯测试的测 ...
- pytest(9)-标记用例(指定执行、跳过用例、预期失败)
pytest中提供的mark模块,可以实现很多功能,如: 标记用例,即打标签 skip.skipif标记跳过,skip跳过当前用例,skipif符合情况则跳过当前用例 xfail标记为预期失败 标记用 ...
- Selenium2+python自动化70-unittest之跳过用例(skip)
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
- unittest之跳过用例(skip) (含如何调用类里面函数相互调取变量的方法)
当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没 ...
随机推荐
- 随着php7的发布我个人觉得有必要进行一下历史回顾和整理
先看下人尽皆知的发展历史: HP 继承自一个老的工程,名叫 PHP/FI.PHP/FI 在 1995 年由 Rasmus Lerdorf 创建,最初只是一套简单的 Perl 脚本,用来跟踪访问他主页的 ...
- Spark入门(二)--如何用Idea运行我们的Spark项目
用Idea搭建我们的Spark环境 用IDEA搭建我们的环境有很多好处,其中最大的好处,就是我们甚至可以在工程当中直接运行.调试我们的代码,在控制台输出我们的结果.或者可以逐行跟踪代码,了解spark ...
- 基于 Roslyn 实现一个简单的条件解析引擎
基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...
- github的上面的安全工具
简介 Scanners Box也被称为 scanbox,是一个强大完备的黑客工具箱,它收集了Github上数10种类别的开源扫描器,包括子域名,数据库,中间件和其他模块化设计的扫描器等,但对于一些被大 ...
- 采用最简单的方式在ASP.NET Core应用中实现认证、登录和注销
在安全领域,认证和授权是两个重要的主题.认证是安全体系的第一道屏障,是守护整个应用或者服务的第一道大门.当访问者请求进入的时候,认证体系通过验证对方的提供凭证确定其真实身份.认证体系只有在证实了访问者 ...
- 从零开始学习R语言(八)——R语言绘图
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...
- Redis 的键命令、HyperLogLog 命令、脚本命令、连接命令、服务器命令
Redis 的键命令.HyperLogLog 命令.脚本命令.连接命令.服务器命令 Redis 的键命令 Redis 的键命令主要用于管理 Redis 的键,如删除键.查询键.修改键及设置某个键等. ...
- vue 2
目录 复习 今日 指令 条件指令 循环指令 评论案例 解决插值表达式符号冲突 总结 组件 局部组件 全局组件 组件间的交互:父传子 组件间的交互:子传父 复习 """ 1 ...
- MySQL到底能有多少个字段
今天技术讨论群里 “一切随遇而安”同学看书时出现一个疑问,一个MySQL的表中到底可以有多少个字段?带着这个疑问,我们展开了探讨,也接着讨论了一个单字段长度的问题. 1. 官方文档说明 官方文档的内 ...
- OLED的使用-4线SPI驱动
一 .OLED屏 1.OLED屏(七针) 2.OLED电路图 3.0.96'OLED简介 该模块特点: 1.三色可选,模块有两种单色和黄蓝双色两种颜色可选,单色为纯白色和纯蓝色,双 色为黄蓝双色: 2 ...