提高.pytest失败:未使用try/excep引发

2024-05-16 03:02:15 发布

您现在位置:Python中文网/ 问答频道 /正文

使用时提高.pytest要测试try/except块捕获的错误,它将由于未引发而失败。在

如果我用dict查找做一个简单的测试,并且不在它周围加上try/except,那么提高.pytest测试通过。但如果使用try/except,则测试失败。在

这就是工作原理:

def lookup_value(key):

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

    return lookup[key]


def test_lookup():

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

现在添加try/except:

^{pr2}$

第一个片段,测试通过。 第二个片段,我得到“Failed:didnotraise<class 'KeyError'>;”


Tags: keytestreturnpytestvaluedef错误with
1条回答
网友
1楼 · 发布于 2024-05-16 03:02:15

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

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

您只需重新初始化异常,以便pytest.raises可以看到它

^{pr2}$

另外,在返回另一个代码路径的函数末尾省略return语句通常是不好的做法。在Python中有一个隐含的return None,但是为什么不通过显式地编写它来帮助读者呢。在

相关问题 更多 >