Python 单元测试错误';issubclass arg 2';
我不知道这个错误是什么意思。 这是我的测试:Python 单元测试错误';issubclass arg 2';,python,Python,我不知道这个错误是什么意思。 这是我的测试: def test_method_delete(self): test_graph = trie_builder.Graph() node_name = 'node_0' test_graph.node(node_name) # Create a node. test_graph.delete(node_name) # Delete the node.
def test_method_delete(self):
test_graph = trie_builder.Graph()
node_name = 'node_0'
test_graph.node(node_name)
# Create a node.
test_graph.delete(node_name)
# Delete the node.
self.assertNotIn(node_name, test_graph.node_list)
node_name = 'node_1'
with self.assertRaises(KeyError('ERROR: Attempt to delete non-existent node.')):
test_graph.delete(node_name)
这是我的方法:
def delete(self, node_name):
if node_name in self.node_list:
del self.node_list[node_name]
else:
raise(KeyError('ERROR: Attempt to delete non-existent node.'))
这就是错误:
ERROR: test_method_delete (__main__.test_class_Graph)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_trie_builder.py", line 66, in test_method_delete
test_graph.delete(node_name)
File "/Users/juliushamilton/Documents/Work/Nantomics_trie_builder/trie_builder/trie_builder.py", line 25, in delete
raise(KeyError('ERROR: Attempt to delete non-existent node.'))
KeyError: 'ERROR: Attempt to delete non-existent node.'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test_trie_builder.py", line 66, in test_method_delete
test_graph.delete(node_name)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/unittest/case.py", line 184, in __exit__
if not issubclass(exc_type, self.expected):
TypeError: issubclass() arg 2 must be a class or tuple of classes
有什么问题吗?“arg2”指的是什么?您是否尝试将
KeyError
类(未实例化实例)传递给assertRaises
?看起来,assertRaises
正在尝试检查它得到的错误是否属于您给它的错误类的类型,但是KeyError(“错误:尝试删除不存在的节点”)
是类型KeyError
的实例,而不是类型本身
with self.assertRaises(KeyError):
test_graph.delete(node_name)
文件似乎没有明确说明这一点:
,但从堆栈跟踪来看,它所做的似乎是检查它接收的异常是否是使用issubclass
传递给它的异常类的子类IsubClass
只能接受类型作为其第二个参数,因此传递实例是您得到的错误
如果还要检查错误文本,则需要使用assertRaisesRegexp
:
+如果要检查错误文本,需要使用@dhke将其添加到帖子中。