![](/img/trans.png)
[英]Using python unittest, how can I assert an error reported gave a certain message?
[英]In python 3.4.1, how can I assert an error in unittest like this?
例如,我定义一个类似
def f(n): return 1+'1'
在单元测试中,我定义了test_error:
assertRaises(TypeError,f(1))
但这只是表明这是一个错误。 但是当我没有任何参数定义f
def f(): return 1+'1'
并在单元测试中
assertRaises(TypeError,f)
它工作得很好。 这是为什么? 如何处理带有参数的函数?
您在将第一个函数交给assertRaises()
方法之前先对其进行了assertRaises()
。 您可以为该方法提供其他参数,然后将其传递给被测函数:
self.assertRaises(TypeError, f, 1)
更好的选择是将self.assertRaises()
用作上下文管理器:
with self.assertRaises(TypeError):
f(1)
在这种情况下,您将方法称为“通常”,它的读取自然得多。
请参阅TestCase.assertRaises()
文档 :
测试是否使用还传递给
assertRaises()
任何位置或关键字参数调用callable时引发了异常。
和
如果仅给出异常和可能的msg参数,则返回一个上下文管理器,以便可以将内测代码而不是作为函数编写:
with self.assertRaises(SomeException): do_something()
这是因为您应该将函数参数与其参数一起传递:
self.assertRaises(TypeError, f, 1)
仅供参考,根据文档 ,这是assertRaises()
合同:
assertRaises(exception, callable, *args, **kwds)
其中callable
是您的f
函数, *args
和**kwds
是您传入的位置和关键字参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.