gpt4 book ai didi

pytest - 在 py.test 中,如何缩小 xfail 标记的范围?

转载 作者:行者123 更新时间:2023-12-04 05:38:14 25 4
gpt4 key购买 nike

我想缩小 pytest xfail 标记的范围。就我目前使用的情况而言,它标志着整个测试功能,功能中的任何失败都很酷。

我想将其缩小到更小的范围,也许使用类似于“with pytest.raises (module.Error)”的上下文管理器。例如:

@pytest.mark.xfail
def test_12345():
first_step()
second_step()
third_step()

如果我在我调用的三种方法中的任何一种中进行断言,则此测试将失败。我希望测试只有在 second_step() 中断言时才 xfail,而不是在其他地方。像这样的东西:
def test_12345():
first_step()
with pytest.something.xfail:
second_step()
third_step()

py.test 可以实现吗?

谢谢。

最佳答案

您可以自己定义一个上下文管理器来完成它,如下所示:

import pytest

class XFailContext:
def __enter__(self):
pass
def __exit__(self, type, val, traceback):
if type is not None:
pytest.xfail(str(val))
xfail = XFailContext()

def step1():
pass

def step2():
0/0

def step3():
pass

def test_hello():
step1()
with xfail:
step2()
step3()

当然,您也可以修改 contextmanager 以查找特定异常。
唯一需要注意的是,您不能导致“xpass”结果,即(部分)测试意外通过的特殊结果。

关于pytest - 在 py.test 中,如何缩小 xfail 标记的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com