2013-04-02 33 views
0

我有一個非常簡單的測試如下:IndexError同時使查詢在一個TestCase

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中使用上述任何查詢。那麼如何在測試中不工作?

回答

3

查看documentation在django測試。創建一個新的「測試」數據庫,並且不使用您的「生產」數據庫。除非您在TestCase setUp方法中創建跳閘條目,否則它是空的。另外,在每個TestCase運行後,數據庫都會被截斷,所以如果您需要在多個TestCase中使用Trips,則需要在每個TestCase setUp中爲其創建數據庫條目。