Python单元测试用例错误:只接受2个参数(给定3个)
在运行python二进制搜索树遍历测试用例时遇到问题。它给出了一个错误,如下所示:Python单元测试用例错误:只接受2个参数(给定3个),python,binary-search-tree,inorder,Python,Binary Search Tree,Inorder,在运行python二进制搜索树遍历测试用例时遇到问题。它给出了一个错误,如下所示: ====================================================================== ERROR: test_case_1 (__main__.TestProgram) ---------------------------------------------------------------------- Traceback (most recent c
======================================================================
ERROR: test_case_1 (__main__.TestProgram)
----------------------------------------------------------------------
Traceback (most recent call last):
File "BST_traversal.py", line 31, in test_case_1
self.assertEqual(root.inOrderTraversal(root,[]),inOrder)
TypeError: inOrderTraversal() takes exactly 2 arguments (3 given)
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
BST的代码为:
import unittest
class BST:
def __init__(self,value):
self.value = value
self.left = None
self.right = None
def inOrderTraversal(self,array):
if self is not None:
inOrderTraversal(self.left,array)
array.append(self.value)
inOrderTraversal(self.right,array)
return array
class TestProgram(unittest.TestCase):
def test_case_1(self):
root = BST(10)
root.left = BST(5)
root.left.left = BST(2)
root.left.left.left = BST(1)
root.left.right = BST(5)
root.right = BST(15)
root.right.right = BST(22)
inOrder = [1, 2, 5, 5, 10, 15, 22]
preOrder = [10, 5, 2, 1, 5, 15, 22]
postOrder = [1, 2, 5, 5, 22, 15, 10]
self.assertEqual(root.inOrderTraversal(root,[]),inOrder)
if __name__ == '__main__':
unittest.main()
即使在为BST创建了一个单独的类之后,也不会给我太多帮助。self是一个隐藏的参数,你不需要给出它
import unittest
class BST:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def inOrderTraversal(self, data, array):
if data is not None:
data.inOrderTraversal(data.left, array)
array.append(data.value)
data.inOrderTraversal(data.right, array)
return array
class TestProgram(unittest.TestCase):
def test_case_1(self):
root = BST(10)
root.left = BST(5)
root.left.left = BST(2)
root.left.left.left = BST(1)
root.left.right = BST(5)
root.right = BST(15)
root.right.right = BST(22)
inOrder = [1, 2, 5, 5, 10, 15, 22]
preOrder = [10, 5, 2, 1, 5, 15, 22]
postOrder = [1, 2, 5, 5, 22, 15, 10]
arr = root.inOrderTraversal(root, [])
print(arr)
self.assertEqual(arr, inOrder)
if __name__ == '__main__':
unittest.main()
self是一个隐藏的参数,你不需要给出它
import unittest
class BST:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def inOrderTraversal(self, data, array):
if data is not None:
data.inOrderTraversal(data.left, array)
array.append(data.value)
data.inOrderTraversal(data.right, array)
return array
class TestProgram(unittest.TestCase):
def test_case_1(self):
root = BST(10)
root.left = BST(5)
root.left.left = BST(2)
root.left.left.left = BST(1)
root.left.right = BST(5)
root.right = BST(15)
root.right.right = BST(22)
inOrder = [1, 2, 5, 5, 10, 15, 22]
preOrder = [10, 5, 2, 1, 5, 15, 22]
postOrder = [1, 2, 5, 5, 22, 15, 10]
arr = root.inOrderTraversal(root, [])
print(arr)
self.assertEqual(arr, inOrder)
if __name__ == '__main__':
unittest.main()
导入单元测试
BST级:
定义初始值,值:
自我价值=价值
self.left=无
self.right=无
def inOrderTraversalself,数组:
如果self和self.left:
self.left.inOrderTraversalarray
如果自我:
array.appendself.value
如果self和self.right:
self.right.inOrderTraversalarray
返回数组
类TestProgramunittest.TestCase:
def测试案例本身:
根=BST10
root.left=BST5
root.left.left=BST2
root.left.left.left=BST1
root.left.right=BST5
root.right=BST15
root.right.right=BST22
顺序=[1,2,5,5,10,15,22]
前序=[10,5,2,1,5,15,22]
后序=[1,2,5,5,22,15,10]
self.assertEqualroot.inOrderTraversal[],inOrder
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
unittest.main
应该是这样的。您已经非常接近了,只需要了解self参数是如何工作的。也不是没有冗余,仅供参考。导入单元测试
BST级:
定义初始值,值:
自我价值=价值
self.left=无
self.right=无
def inOrderTraversalself,数组:
如果self和self.left:
self.left.inOrderTraversalarray
如果自我:
array.appendself.value
如果self和self.right:
self.right.inOrderTraversalarray
返回数组
类TestProgramunittest.TestCase:
def测试案例本身:
根=BST10
root.left=BST5
root.left.left=BST2
root.left.left.left=BST1
root.left.right=BST5
root.right=BST15
root.right.right=BST22
顺序=[1,2,5,5,10,15,22]
前序=[10,5,2,1,5,15,22]
后序=[1,2,5,5,22,15,10]
self.assertEqualroot.inOrderTraversal[],inOrder
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
unittest.main
应该是这样的。您已经非常接近了,只需要了解self参数是如何工作的。也不是没有多余的,仅供参考。Python的。您需要对实现进行重大调整,或者创建单独的独立函数,或者修改inOrderTraversal以接受其他参数。您需要对实现进行重大调整,或者创建单独的独立函数,或者修改inOrderTraversal以引入其他参数。