使用时提高.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'
>;”
这里的代码正在吞并异常(捕捉异常而不传播发生异常的事实)。在
您只需重新初始化异常,以便
^{pr2}$pytest.raises
可以看到它另外,在返回另一个代码路径的函数末尾省略
return
语句通常是不好的做法。在Python中有一个隐含的return None
,但是为什么不通过显式地编写它来帮助读者呢。在相关问题 更多 >
编程相关推荐