繁体   English   中英

Django:Class对象没有标准函数的属性

[英]Django: Class object has no attribute of standard function

我有一个模型:

class Order(models.Model):

    STATUS_CHOICES = (
        (100, 'First'),
        (200, 'Second'),
    )
    status = models.IntegerField('Status', choices=STATUS_CHOICES)

    def accept(self):
        self.status = 200
        self.save()
        return self.status, self.get_status_display()

我为此进行了单元测试:

class CustomTestCase(TestCase):

    @classmethod
    def setUp(self):
        pass

    @classmethod
    def save(self):
        pass


class OrderTest(CustomTestCase):

    def test_accept(self):
        result = Order.accept(self)
        expected = (200, 'Second')

        self.assertEqual(expected, result)

如您所见,我添加了不执行任何操作的“保存”功能,原因是因为没有该自定义的“保存”功能,我不断收到此错误:

[OrderTest]对象没有属性[保存]

如果对该自定义的“保存”功能有更好的解决方案,请告诉我。 但是,这种解决方案不适用于django内置的“ get_status_display()”函数。 没有解决方案,我总是遇到这个麻烦:

[OrderTest]对象没有属性[get_status_display]

我可以根据需要做些什么?

如果要测试accept方法,只需创建一个新的Order,如下所示:

 def test_accept(self):
    order = Order.objects.create(status=100)
    result = order.accept()
    expected = (200, 'Second')
    self.assertEqual(expected, result)

得到[OrderTest] object has no attribute [save]错误的原因是,您将测试对象传递给accept方法(在“ Order.accept(self) “中),因此在self.save()时,它会实际上是在寻找测试类的save方法。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM