Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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单元测试时出现问题_Python_Unit Testing_Class - Fatal编程技术网

在类上执行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()