繁体   English   中英

在python 3.4.1中,如何在unittest中断言这样的错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM