pytest skipif_pytest失败重跑
前言
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.cn/166271.html原文链接:https://javaforall.cn
相关文章
- pytest数据驱动及conftest文件及装饰器使用
- pytest学习及资料
- Pytest(1)安装与入门「建议收藏」
- Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]
- pytest运行_pytest执行多个py文件
- Pytest(13)命令行参数–tb的使用
- 怎么新建pytest的ini文件_pytest.ini配置
- pytest报错_git是什么
- pytest的使用_调用方法的具体调用格式为
- Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]
- pytest重试_微信加载插件失败怎么办
- 用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]
- pytest测试框架和unittest_python性能测试框架
- 测试之路 pytest接口自动化框架扩展-完结篇
- pytest + yaml 框架 -8.一个yaml 文件可以支持多个用例了
- pytest + yaml 框架 -10.生成 allure 报告
- pytest + yaml 框架 -13.多环境配置切换
- 软件测试|Pytest的必会技巧(一)
- pytest学习和使用8-fixture如何实现teardown功能?(yield的使用)
- pytest学习和使用12-Unittest和Pytest参数化详解
- pytest学习和使用16-HTML报告如何生成?(pytest-html)
- pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?(pytest-assume)
- pytest学习和使用23-通俗易懂的聊聊allure常用特性集合及使用方法说明