Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单元测试错误';issubclass arg 2';_Python - Fatal编程技术网

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将其添加到帖子中。