环境:
Django 版本:1.7.1
鼻子版本:1.3.4
django-nose 版本:1.2
我有两个应用程序:
狗和人类
该模型具有:
class Dog(models.Model):
human = models.ForeignKey('humans.Human', null=False)
def askFood(human):
...
人类
并且在模型中有一个类似于人类示例属性的函数,比如
name = models.CharField(_('Name'), null=False, max_length=120)
这两个应用程序在设置文件中的 INSTALLED_APPS 中列出。
FIXURE_DIRS 如下:
FIXTURE_DIRS = (
os.path.join(os.path.dirname(__file__), '../**/tests'),
)
测试在狗应用程序的测试文件夹中。
我在狗应用程序中有一个测试来测试 askFood 功能,并且我有一个带有人类的 JSON 固定装置(initial_data)。
[
{
"pk": 1,
"model": "human.Human",
"fields": {
"name": "Test"
}
},
]
测试是:
class DogFixtureTestCase(TestCase):
fixtures = ['./initial_data.json']
class TestFixtureDog(DogFixtureTestCase):
def test_ask_food(self):
...
我执行命令进行测试:
python manage.py test dog
有一个错误:
no such table: dog_dog
显然它没有同步所有的应用程序,它只创建狗的桌子,当夹具运行时它找不到人类桌子。如何强制测试为所有应用程序创建模型?
在此先感谢您的帮助 :)
[编辑]
我更改了标题并发布了一个答案,也许可以帮助遇到同样问题的人。
问题不在于同步不会创建所有表,错误消息具有误导性。问题在于 django 1.7 不再支持的初始数据夹具。