![](/img/trans.png)
[英]testing Django with standard Unittest: 'DatabaseWrapper' object has no attribute 'Database'
[英]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.