0

我有一个非常简单的测试如下:

import models
from django.test import TestCase

MyViewTest(TestCase):
    def setUp(self):
        self.trip = models.Trip.objects.order_by('?')[0]

   def test_something(self):
       # Blah Blah

每当我运行测试时,它都会抛出下面提到的错误:

Traceback (most recent call last):
  File "/home/amyth/Projects/test/trips/tests.py", line 8, in setUp
    self.trip = models.Trip.objects.order_by('?')[0]
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 207, in __getitem__
    return list(qs)[0]
IndexError: list index out of range

我也尝试将查询更改为models.Trip.objects.all()[0],它仍然会引发相同的错误。奇怪的是,如果我在它工作的 shell 中使用上述任何查询。那么为什么它在测试中不起作用?

4

1 回答 1

3

请参阅django 中的测试文档。创建了一个新的“测试”数据库,并且不使用您的“生产”数据库。除非您在 TestCase 方法中创建 Trip 条目setUp,否则它是空的。此外,在每个 TestCase 运行后,数据库都会被截断,因此如果您需要在多个 TestCase 中使用 Trips,则需要在每个 TestCase 中为其创建数据库条目setUp

于 2013-04-02T13:07:02.110 回答