我已经为我正在处理的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)
...
答案 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将在三个地点进行搜索 对于灯具:
- 在每个已安装的应用程序的fixtures目录中
- 在FIXTURE_DIRS设置中指定的任何目录
- 醇>
在灯具命名的文字路径
答案 3 :(得分:2)
有一点需要注意,在设置文件中创建FIXTURE_DIRS常量时,如果项目根目录下有一个常规夹具目录,请务必省略前导'/'。
例如:
'/实际/路径/到/我的/应用/装置/'
现在,在settings.py文件中:
不会工作:
FIXTURE_DIRS ='/ fixtures /'
会工作:
FIXTURE_DIRS ='fixtures /'
这可能取决于你的其他路线的配置方式,但这让我头疼了一会儿。希望这很有用。欢呼声。