Mad*_*di7 2 python django unit-testing
我有一个模特:
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()
Run Code Online (Sandbox Code Playgroud)
我有一个单元测试:
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)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我添加了"保存"功能,什么都不做,原因是因为没有自定义'保存'功能,我不断收到此错误:
[OrderTest]对象没有属性[保存]
如果对自定义"保存"功能有更好的解决方案,请告诉我.但是这种解决方案不适用于django内置的'get_status_display()'函数.没有解决方案,我一直遇到这个麻烦:
[OrderTest]对象没有属性[get_status_display]
我可以做些什么才能让我的工作变得我需要?
小智 5
如果要测试accept方法,只需创建一个新订单,如下所示:
def test_accept(self):
order = Order.objects.create(status=100)
result = order.accept()
expected = (200, 'Second')
self.assertEqual(expected, result)
Run Code Online (Sandbox Code Playgroud)
您收到[OrderTest] object has no attribute [save]错误的原因是您将测试对象传递给accept方法(在" Order.accept(self)"中),因此在self.save()调用时,它实际上会查找save测试类的方法.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |