在类上执行Python单元测试时出现问题
在我创建的类上执行简单的单元测试时遇到问题。我得到了这个错误: 断言者错误:!=十八在类上执行Python单元测试时出现问题,python,unit-testing,class,Python,Unit Testing,Class,在我创建的类上执行简单的单元测试时遇到问题。我得到了这个错误: 断言者错误:!=十八 在单元测试中,您创建了一个结果对象,它是MathClass对象`: def设置(自): self.result=MathClass() 稍后调用MathClass对象的add方法。 问题是您的add方法返回self,例如数学对象本身 def添加(self,num,*nums): self.result+=num+sum(nums) 回归自我 在内部,MathClass.result可能会更改,但add仍会返
在单元测试中,您创建了一个结果对象,它是
MathClass
对象`:
def设置(自):
self.result=MathClass()
稍后调用MathClass对象的add
方法。
问题是您的add
方法返回self
,例如数学对象本身
def添加(self,num,*nums):
self.result+=num+sum(nums)
回归自我
在内部,MathClass.result
可能会更改,但add
仍会返回数学对象
因此,您的assertEquals
检查将比较数学对象和int
(18)。它们不相等:)
如果要保留变量名,可以创建一个局部变量,用于获取MathClass对象的结果并将其与18进行比较:
def testAdd(自):
自我结果添加(4,5,9)
值=self.result.result
self.assertEqual(值,18)
或者你觉得更合适的任何其他选择。谢谢,这是一个很好的选择,解释帮助很大。最后,我将代码保存在
MathTest
中,并在我的MathClass的add
方法中使用了return self.result
import unittest
class MathClass:
def __init__(self):
self.result = 0
def add(self, num, *nums):
self.result += num + sum(nums)
return self
def subtract(self, num, *nums):
self.result -= (num + sum(nums))
return self
class MathTest(unittest.TestCase):
def testAdd(self):
self.assertEqual(self.result.add(4,5,9), 18)
def setUp(self):
self.result = MathClass()
if __name__ == "__main__":
unittest.main()