gpt4 book ai didi

python - 在 Python 中使用 `assertRaises()` 的自定义失败消息?

转载 作者:太空狗 更新时间:2023-10-29 21:45:22 25 4
gpt4 key购买 nike

Python 2.7 unittest docs说:

All the assert methods (except assertRaises(), assertRaisesRegexp()) accept a msg argument that, if specified, is used as the error message on failure

...但是如果我想为 assertRaises()assertRaisesRegexp() 指定错误消息怎么办?

用例:在循环中测试各种值时,如果一个失败,我想知道是哪个:

NON_INTEGERS = [0.21, 1.5, 23.462, math.pi]

class FactorizerTestCase(unittest.TestCase):
def test_exception_raised_for_non_integers(self):
for value in NON_INTEGERS:
with self.assertRaises(ValueError):
factorize(value)

如果其中任何一个失败,我得到:

AssertionError: ValueError not raised

这对我找出哪个失败的帮助不大……如果我能提供一个 msg= 参数就好了,就像我可以使用 assertEqual() 等一样!

(我当然可以将它们分解成单独的测试函数——但也许有很多我想测试的值,或者它需要一些缓慢/昂贵的设置,或者它是更长的功能测试的一部分)

如果我可以轻松让它报告类似以下内容,我会很高兴:

AssertionError: ValueError not raised for input 23.462

— 但它还不够重要,不足以保证重新实现/扩展 assertRaises() 并向我的测试添加更多代码。

最佳答案

你也可以回退到使用 self.fail 这感觉很烦人,但我认为看起来不那么 hacky

for value in NON_INTEGERS:
with self.assertRaises(ValueError) as cm:
factorize(value)
self.fail('ValueError not raised for {}'.format(value))

关于python - 在 Python 中使用 `assertRaises()` 的自定义失败消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066088/

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