我有以下功能:
def is_complete(grph):
if not isinstance(grph,graph):
raise TypeError
...
以及以下测试用例:
def test_is_complete_q4(self):
g1 = [1]
self.assertRaises(TypeError, is_complete(g1))
我收到以下错误: 错误 回溯(最近一次调用最后一次):
File "/Users/.../test_graph_functions.py", line 34, in test_is_complete_q4
self.assertRaises(TypeError, is_complete(g1))
File "/Users/.../graph_functions.py", line 6, in is_complete
raise TypeError
TypeError
我可以清楚地看到引发TypeError,为什么我的unittest会失败?
答案 0 :(得分:0)
您将调用is_complete
的返回值作为self.assertRaises
的第二个参数传递。相反,您需要将函数is_complete
本身作为第二个参数传递,并将is_complete
的参数作为assertRaises
的附加参数。 (换句话说,将片段传递给assertRaises
,让它进行实际通话。)
self.assertRaises(TypeError, is_complete, g1)
或者,您可以使用assertRaises
作为上下文管理器,并在with
语句的正文中调用您的函数。
with self.assertRaises(TypeError):
is_complete(g1)