pytest skipif_pytest失败重跑

pytest skipif_pytest失败重跑前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能
 

Skip和xfail: 处理那些不会成功的测试用例

你可以对那些在某些特定平台上不能运行的测试用例或者你预期会失败的测试用例做一个标记,这样pytest在提供测试报告时可以做对应的处理以保持整个测试套的结果都是green的(一般都用绿色表示测试通过)

skip表示在满足某些情况下该测试用例是通过的,否则这个测试用例应该被跳过不执行。比较常见的例子是测试用例在windows平台下执行在非windows平台下不执行,或者比如数据库等外部资源不能访问时不执行某些测试用例。 xfail表示期望某个测试用例因为某些原因是失败的。一个常见的例子是一个新特性还没有实现或者bug还没有被修复。如果该测试用例已经被定义为pytest.mark.xfail但是又测试通过了,那么在最后的测试报告中会被标记为xpass。

pytest单独统计skip和xfail的测试用例,为了保持整洁,默认情况下测试报告中不会显示skipped/xfailed的测试用例的信息。你可以使用-r选项来查看相关的详细信息: pytest -rxXs # r:显示详细信息 x: xfailed, X: xpassed, s: skipped 你可以在pytest -h中查看-r的更多帮助。
 

skip(无条件跳过)

 

最简单的方式就是使用skip装饰器:

@pytest.mark.skip(reason="no way of currently testing this") 
	def test_the_unknown(): 
    ...

 

也可以在代码执行过程中直接调用pytest.skip(reason)来强制跳过:

def test_function(): 
  if not valid_config(): 
    pytest.skip("unsupported configuration")

 

skipif(有条件跳过)

 

你可以使用skipif来在某些条件下跳过测试。

下面是一个在检查python的版本是否高于3.6的示例:

import sys 
@pytest.mark.skipif(sys.version_info < (3, 6), reason="require python3.6 or higher") 
	def test_function(): 
    ...

在查找用例的时候,如果判断skipif的条件是True,该用例会被跳过,如果使用-rs参数,详细的reason会在测试报告中体现

 

如果你要跳过模块中的所有测试,你需要使用全局的pytestmark:

# test_module.py 
pytestmark = pytest.mark.skipif("跳过原因")

 

你可以在各个模块中共享skipif标记,比如有下面的模块定义:

# test_mymodule.py 
import mymodule 
minversion = pytest.mark.skipif(mymodule.__versioninfo__ < (1,1), reason="at least mymodule‐1.1 required") 

@minversion 
def test_function(): 
  ...

 

你可以在其他模块中import这个标记:

# test_myothermodule.py 
from test_mymodule import minversion 

@minversion 
def test_anotherfunction(): 
  ...

在大型项目中,一般会将这些共享的标记放在同一个文件里供其他模块调用。

 

XFail:标记测试用例是期望失败的

 

你可以使用xFail来标记你期望某个测试用例是失败的:

@pytest.mark.xfail 
	def test_function(): ...

该测试用例会被正常执行,但是当它失败的时候不会有traceback。在测试报告中,该测试会被列举在“期望失败的用例”(XFAIL)或者“不应该通过的用例”(XPASS)里。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166006.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月31日 上午6:36
下一篇 2022年7月31日 上午6:36


相关推荐

  • 插件8:拼写检查

    插件8:拼写检查&lt;?php//Plug-in8:SpellCheck//Thisisanexecutableexamplewithadditionalcodesupplie

    2022年4月29日
    14.1K
  • 别急着“养虾”,OpenClaw的安全账单和Token消耗你算清了吗?

    别急着“养虾”,OpenClaw的安全账单和Token消耗你算清了吗?

    2026年3月14日
    2
  • 电脑使用哪个录制视频软件比较好

    电脑使用哪个录制视频软件比较好如今社会从一个开放的年代发展为开放的信息时代,人们对于自我表达越发的大胆。追求标新立意,而视频正好迎合了人群的需要。视频的表现方式比图纸更加直观具有冲击力,更展现更加生动丰富的内容。想要录制视频其实不难,只需要一款专业的录制视频软件就可以帮搜我们达到我们想要的效果。使用工具:电脑(有网络)迅捷屏幕录像工具操作步骤:1、首先电脑在线进入百度浏览器搜索迅捷屏幕录像,并且安装在电脑上进行运行。…

    2022年6月16日
    29
  • linux chmod详解

    linux chmod详解文件的权限表示可以通过 ll 命令展示文件的信息 chmod 文件权限 chmod 命令 chmod changemode 命令是控制用户对文件的权限的命令 Linux Unix 的文件调用权限分为三级 文件所有者 Owner 用户组 Group 其它用户 OtherUsers 语法 chmodmodefil 其中 mode 可以设定为字符串 ugoa rwx 其中 ugoa 代表的是 u

    2026年3月19日
    3
  • bs是cs的一种吗_cs客户端和bs客户端

    bs是cs的一种吗_cs客户端和bs客户端一,B/S结构是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到二,区别(C/S与B/S):1.硬件环境不同:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门2.对安全要求不同:C/S一般面向相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。可以通过B/S发布…

    2022年10月17日
    5
  • Windows平台及服务器部署安装多个Tomcat服务(详细版)

    Windows平台及服务器部署安装多个Tomcat服务(详细版)Tomcat安装有两种方式,一是下载安装版,这个也是在部署多个Tomcat服务的时候最方便的,也是最快的,二是就是下载免安装版,解压即可,单个Tomcat免安装版是最快的。一、下载Tomcat,我用的是Tomcat8.5到Tomcat官网http://tomcat.apache.org/,根据需求下载所需要的版本我下载的是Tomcat8.5二、安装二.一安装版下载…

    2022年6月18日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号