Django测试没有加载夹具数据

zsq*_*are 17 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)
    ...
Run Code Online (Sandbox Code Playgroud)

Joh*_*Mee 35

django.test以下位置导入TestCase :

from django.test import TestCase

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

那是一个令人沮丧的日子.停止抱怨 - 它在文档中: - /

  • "停止抱怨"的签名是自我指导的,旨在作为某种神秘的最终齐射,针对那些为设计令人沮丧的人辩护"好吧,所有这些都写在文档中,因此唯一可以归咎于困难的人就是你自己." 不要在一些了解答案的自大狂的背景下阅读它,而是像你自己那样花了一个非常令人沮丧的一天来解决问题. (22认同)
  • -1表示"停止抱怨"; 似乎有点居高临下 (11认同)

mic*_*mit 8

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

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

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

你看到Django搜索appnames/fixtures和settings.FIXTURE_DIRS并加载第一个匹配.因此,如果您使用像testdata.json这样的名称作为灯具,则必须确保没有其他活动应用程序使用具有相同名称的灯具.如果没有,你永远无法确定你实际装载的装置.因此,建议您使用应用程序名称为灯具添加前缀,例如myapp/fixtures/myapp_testdata.json.

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


Dan*_*per 5

检查夹具是否确实在正确的位置.来自文档:

Django将在三个地点搜索固定装置:

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