gpt4 book ai didi

python - Django:类对象没有标准函数的属性

转载 作者:行者123 更新时间:2023-11-28 21:39:26 25 4
gpt4 key购买 nike

我有一个模型:

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] object has no attribute [save]

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

[OrderTest] object has no attribute [get_status_display]

我该怎么做才能让这项工作按我的需要进行?

最佳答案

如果你想测试 accept 方法,只需像这样创建一个新订单:

 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方法。

希望这对您有所帮助。

关于python - Django:类对象没有标准函数的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46822797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com