Pytest skip&&skipif跳过⽤例

Pytest skip&&skipif跳过⽤例

跳过用例:@pytest.mark.skip @pytest.mark.skipif

skip和skipif可以标记希望跳过的测试用例。要给跳过的测试添加理由和条件,应当使用skipif。

区别:

skip和skipf区别:skip无条件跳过;skipif有条件的跳过

复制代码
import pytest

@pytest.mark.skip(reason="test11暂不执行")
def test_11():
	print("正在执行测试用例-------test_11")
	a = ['a','b','c',1,2,3]
	b = 'a'
	assert b in a

@pytest.mark.skipif(2>1,reason="因为2>1成立所以暂不执行")
def test_12():
	print("正在执行测试用例-------test_12")
	x = 'a'
	y = 'b'
	assert x != y

def test_13():
	print("正在执行测试用例-------test_13")
	assert 3>2
	print("assert后执行")

def test_14():
	print("正在执行测试用例-------test_14")
	assert 1>2
	print("assert后执行")

def test_15():
	print("正在执行测试用例-------test_15")
	pytest.assume(2>=2)
	pytest.assume('a'=='a')
	pytest.assume(2 in [1,2,3,4])
	pytest.assume( 1 != 2)
	print("assert后执行")

执行结果:

复制代码
test_mod5.py::test_11 SKIPPED (test11暂不执行)
test_mod5.py::test_12 SKIPPED (因为2>1成立所以暂不执行)
test_mod5.py::test_13 正在执行测试用例-------test_13
assert后执行
PASSED
test_mod5.py::test_14 正在执行测试用例-------test_14
FAILED
test_mod5.py::test_15 正在执行测试用例-------test_15
assert后执行
PASSED

======================================================================================== FAILURES ========================================================================================
________________________________________________________________________________________ test_14 _________________________________________________________________________________________

    def test_14():
        print("正在执行测试用例-------test_14")
>       assert 1>2
E    assert 1 > 2

test_mod5.py:24: AssertionError
================================================================================ short test summary info =================================================================================
FAILED test_mod5.py::test_14 - assert 1 > 2
========================================================================= 1 failed, 2 passed, 2 skipped in 0.39s =========================================================================

可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量单独封装成一个模块在不同模块之间导入以达到集中管理这些通用标记的目的,然后适用于整个测试用例集

复制代码
# mark_skip.py
import sys
import pytest

skip_by_versions = pytest.mark.skip(reason="xxx版本暂不执行")
skip_by_platform = pytest.mark.skipif(sys.platform=='win32',reason=f"{sys.platform}平台暂不执行")

# test_mod5.py
import pytest
from mark_skip import *

@skip_by_versions
def test_11():
	print("正在执行测试用例-------test_11")
	a = ['a','b','c',1,2,3]
	b = 'a'
	assert b in a

@skip_by_platform
def test_12():
	print("正在执行测试用例-------test_12")
	x = 'a'
	y = 'b'
	assert x != y

def test_13():
	print("正在执行测试用例-------test_13")
	assert 3>2
	print("assert后执行")

@skip_by_versions
def test_14():
	print("正在执行测试用例-------test_14")
	assert 1>2
	print("assert后执行")

def test_15():
	print("正在执行测试用例-------test_15")
	pytest.assume(2>=2)
	pytest.assume('a'=='a')
	pytest.assume(2 in [1,2,3,4])
	pytest.assume( 1 != 2)
	print("assert后执行")
相关推荐
12.=0.几秒前
【持续更新】shell脚本 + Linux命令
linux·运维·服务器
无言听风雨丶35 分钟前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
万联WANFLOW35 分钟前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
debugdynamo39 分钟前
Netcatty:把 SSH 客户端做回工作台
运维·其他·ssh
时空无限1 小时前
ssh 直接免密输入 sudo 密码
运维·ssh
OPEN-F1 小时前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
数字新视界1 小时前
机房动环监控系统在提升数据中心能效与安全中的应用探索
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
硅基手札1 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
修心光1 小时前
记录一次,jenkins打包异常问题
运维·jenkins
分布式存储与RustFS1 小时前
JuiceFS 接 RustFS 当数据后端:把对象存储挂成本地文件系统
运维·云原生·开源·对象存储·分布式存储·s3·性能基准