Python帮助无法找出单元测试失败的原因

Python帮助无法找出单元测试失败的原因,python,unit-testing,Python,Unit Testing,嗨,我是python新手,我在弄清楚我的代码出了什么问题以及单元测试失败的原因时遇到了一个问题?以下是运行测试时的代码、单元测试和错误消息: legs = [] stomach = [] class Centipede(object): def __init__(self): def __str__(self): return ','.join(self.stomach) def __call__(self,*args):

嗨,我是python新手,我在弄清楚我的代码出了什么问题以及单元测试失败的原因时遇到了一个问题?以下是运行测试时的代码、单元测试和错误消息:

legs = []
stomach = []
class Centipede(object):
    def __init__(self):

    def __str__(self):       
        return ','.join(self.stomach)

    def __call__(self,*args):
        [self.stomach.append(arg) for arg in args]
        #self.stomach.append(args)

    def __repr__(self):
        return ','.join(self.legs)

    def __setattr__(self, key, value):
        print("setting %s to %s" % (key, repr(value)))
        if key in ([]):
            self.legs.append(key)
            #self.__dict__[key] = value
            object.__setattr__(self, key,value)
AttributeError: 'Centipede' object has no attribute 'legs'
AttributeError: 'Centipede' object has no attribute 'stomach'
单元测试代码

import unittest
from centipede import Centipede

class TestBug(unittest.TestCase):

    def test_stomach(self):
        ralph = Centipede()
        ralph('chocolate')
        ralph('bbq')
        ralph('cookies')
        ralph('salad')
        self.assertEquals(ralph.__str__(), 'chocolate,bbq,cookies,salad')


    def test_legs(self):
        ralph = Centipede()
        ralph.friends = ['Steve', 'Daniel', 'Guido']
        ralph.favorite_show = "Monty Python's Flying Circus"
        ralph.age = '31'
        self.assertEquals(ralph.__repr__(),'<friends,favorite_show,age>' )

if __name__ == "__main__":
    unittest.main()

在你使用它之前,你的腿是不会固定的。你确定你的意思不只是没有self部分的legs,因为你没有使用一个名为legs的全局变量吗?

self.legs在使用它之前从未设置过。你确定你的意思不只是没有自我部分的腿,因为你有一个名为legs的全局变量,你没有使用它吗?

你在课堂外声明了腿和胃-拉尔夫不知道它们应该属于他


将腿和胃放在课程线之后,并将它们缩进与“开始”相同的数量,这将开始推动你前进。

你已经宣布腿和胃在课程之外-拉尔夫不知道它们应该属于他


将腿和胃放在课程线之后,并将它们缩进与“开始”相同的量,应该可以开始向前移动。

将腿和胃移动到蜈蚣中。 我一直想说:

class Centipede(object): 
    def init(self):
        self.stomach=[]
        self.legs=[]

将腿和胃移入蜈蚣体内。 我一直想说:

class Centipede(object): 
    def init(self):
        self.stomach=[]
        self.legs=[]

提示:在您进入某些魔法区域之前,主要是在更复杂的继承情况下处理这些事情-例如您的uuu setattr uu在那里使用对象。uu setattr u u u u u u u u u u u u u u u u u。x、 _uuustr_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;在Python2中,print是一个语句,而不是一个函数;您的对象。uuuu setattr\uuuu self,key,value最好作为超级蜈蚣,self。uuu setattr\uuuuu key,value。提示:在您进入某些魔法区域之前,主要在更复杂的继承情况下处理这些事情-比如您的uuuu setattr\uuuuuuuu,在那里您使用对象。uuuuuu setattr\uuuuuu您不应该使用X。uuuu任何东西。x、 _uuustr_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;在Python2中,print是一个语句,而不是一个函数;你的对象。self,key,value最好作为超级蜈蚣,self。self,setattr,key,值。好的,谢谢你的建议,我会做出建议的改变,看看我是怎么做的?没有快乐测试仍然没有通过我的大脑冻结了这一次我只是不明白。好的,谢谢你的建议,我会做出建议的改变,看看我是怎么做的?没有快乐测试仍然没有通过我的大脑冻结了这一次我只是不明白信息技术