gpt4 book ai didi

python - pytest.raises 失败 : DID NOT RAISE with try/except

转载 作者:行者123 更新时间:2023-12-01 07:34:06 29 4
gpt4 key购买 nike

当使用 pytest.raises 测试由 try/except block 捕获的错误时,由于未引发错误而失败。

如果我使用字典查找进行简单测试,并且不对其进行 try/except 操作,则 pytest.raises 测试会通过。但如果使用try/except,则测试失败。

这就是有效的:

def lookup_value(key):

lookup = {'A': 1, 'B': 2}

return lookup[key]


def test_lookup():

with pytest.raises(KeyError):
lookup_value('C')

现在添加尝试/异常(exception):

def lookup_value(key):

lookup = {'A': 1, 'B': 2}

try:
return lookup[key]
except KeyError as err:
print(err)


def test_lookup():

with pytest.raises(KeyError):
lookup_value('C')

第一个片段,测试通过。第二个片段,我得到“失败:没有提高 <class 'KeyError' >”

最佳答案

这里的代码正在吞噬异常(捕获它而不传播发生异常的事实)。

    try:
return lookup[key]
except KeyError as err:
print(err)

您只需重新引发异常,以便 pytest.raises会看到它

    try:
return lookup[key]
except KeyError as err:
print(err)
raise

此外,省略 return 通常是不好的做法。位于函数末尾的语句,该函数返回另一个代码路径中的内容。在Python中有一个隐含的return None但为什么不明确地写出来帮助读者一点呢。

关于python - pytest.raises 失败 : DID NOT RAISE with try/except,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080127/

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