Pytest权威教程12-跳过(Skip)及预期失败(xFail)_ 处理不能成功的测试用例

[TOC]

返回: Pytest权威教程

跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例

你可以标记无法在某些平台上运行的测试用例或你希望失败的测试用例,以便Pytest可以相应地处理它们并提供测试会话的摘要,同时保持测试套件为通过状态。

跳过(Skip)指,你希望如果某些条件得到满足你的测试用例才执行,否则Pytest应该完全跳过运行该用例。常见示例是在非Windows平台上跳过仅限Windows的测试用例,或者跳过依赖于当前不可用的外部资源的测试用例(例如数据库)。

预期失败(xFail)意味着已知测试失败并标记原因。一个常见的例子是对尚未实现的函数的测试,或者尚未修复的错误。当测试通过时尽管预计会失败(标记为pytest.mark.xfail),但它将在测试结果摘要及报告中显示为xpass状态。

Pytest分别计算并列出Skip和xFail用例。默认情况下不显示有关跳过/标记失败用例的详细信息,以避免输出混乱。你可以使用该-r选项查看与测试进度中显示的不同字母参数对应的详细信息:

pytest -rxXs  # 显示跳过skipped、期望失败xfailed、非期望成功xpass状态用例的额外信息

-r可以通过运行pytest -h,找到有关该选项的更多详细信息。

(请参阅:如何更改命令行选项默认值)

Skip跳过用例

版本2.9中的新函数。

跳过测试用例的最简单方法是使用skip装饰器标记它,可以传递一个可选的原因reason参数:

@pytest.mark.skip(reason="目前没办法测试该用例")
def test_the_unknown():
    ...

或者,也可以在测试执行或setup期间,通过调用pytest.skip(reason)函数强制跳过该用例:

def test_function():
    if not valid_config():
        pytest.skip("不支持该配置")

当在导入时间内无法评估跳过条件时,这种在用例跳过的方法非常有用。

也可以在模块级别跳过整个模块:pytest.skip(reason,allow_module_level=True)

import sys
import pytest

if not sys.platform.startswith("win"):
    pytest.skip("跳过只支持Windows平台的用意",allow_module_level=True)

(译者注:使用此方法跳过整个模块时会抛出Skipped异常,如果在脚本下方使用pytest.main()执行,会执行不到。此时应使用命令行pytest命令执行。) 参考: pytest.mark.skip

Skipif:指定条件下跳过

2.0版中的新功能。

如果你希望特定条件地跳过某些用例,则可以使用skipif。下面的示例演示了,当Python版本小于3.6时跳过测试用例。

import sys
import pytest

@pytest.mark.skipif(sys.version_info<(3,6),reason="需要Python3.6版本以上")
def test_function():
    ...

(译者注:skipif方法必须指定reason)

如果收集用例时,skipif中的条件表达式计算为True,则将跳过测试函数,运行是使用会在-rs,会在运行结果摘要中显示指定的原因。

你可以skipif在模块之间共享标记,参考以下测试脚本:

# test_mymodule.py模块内容
import mymodule

minversion = pytest.mark.skipif(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临渊-测试开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值