Django测试没有加载夹具数据

时间:2011-01-11 07:04:43

标签: django django-views

我已经为我正在处理的Django项目编写了测试,但是一个特定的夹具无法加载。 使用dumpdata生成夹具,我根本没有摆弄它。 我可以使用manage.py在该夹具上加载数据而不会出现错误。我已经验证了使用shell实际加载的数据并查询了数据。 这让我疯了,任何帮助都会非常感激。

这是我的测试文件(删除了相关部分):

class ViewsFromUrls(TestCase):
    fixtures = [
        'centers/fixtures/test_data.json',
        'intranet/fixtures/test_data.json',
        'training/fixtures/test_data.json', #The one that fails to load
        ]

    def setUp(self):
        self.c = Client()
        self.c.login(username='USER', password='PASS')

    ...

    def test_ViewBatch(self):
        b = Batch.objects.all()[0].ticket_number
        response = self.c.get(reverse('training.views.view_batch', kwargs={'id':b}))
        self.assertTrue(response.status_code, 200)
    ...

4 个答案:

答案 0 :(得分:34)

django.test导入TestCase:

from django.test import TestCase

class test_something(TestCase):
    fixtures = ['one.json', 'two.json']
    ...
  • 不是:import unittest
  • 不是:import django.utils.unittest
  • 但是:import django.test

那是令人沮丧的一天。 停止抱怨 - it's in the docs: - /

答案 1 :(得分:8)

我不确定这是否可以解决您的问题,但在此网站上:

https://code.djangoproject.com/wiki/Fixtures

我发现了一个有趣的评论:

  

你看到Django搜索 appnames / fixtures和   settings.FIXTURE_DIRS并加载第一场比赛。所以如果你使用名字   像testdata.json一样,你必须确保没有其他   活动应用程序使用具有相同名称的夹具。如果没有,你可以   永远不要确定你实际装载的是什么装置。因此它是   建议您使用应用程序名称为灯具添加前缀,   例如myapp / fixtures / myapp_testdata.json。

应用这个(用appname重命名灯具作为文件名中的前缀)解决了我的问题(我遇到了与此处描述的相同的问题)

答案 2 :(得分:5)

检查夹具是否确实在正确的位置。来自docs

  

Django将在三个地点进行搜索   对于灯具:

     
      
  1. 在每个已安装的应用程序的fixtures目录中
  2.   
  3. 在FIXTURE_DIRS设置中指定的任何目录
  4.   
  5. 在灯具命名的文字路径
  6.   

答案 3 :(得分:2)

有一点需要注意,在设置文件中创建FIXTURE_DIRS常量时,如果项目根目录下有一个常规夹具目录,请务必省略前导'/'。

例如:
'/实际/路径/到/我的/应用/装置/'

现在,在settings.py文件中:
不会工作:
FIXTURE_DIRS ='/ fixtures /'

会工作:
FIXTURE_DIRS ='fixtures /'

这可能取决于你的其他路线的配置方式,但这让我头疼了一会儿。希望这很有用。欢呼声。