使用Nose运行单元测试时出现南错误

时间:2011-03-23 06:17:50

标签: django migration nose django-south

让django测试运行正常我遇到了一些困难;我正在使用鼻子,并且在应用迁移时我开始收到错误,表1中与表2的外键关系失败并显示错误:

django.db.utils.DatabaseError: relation "table2_column" does not exist

查看迁移的应用方式,我很清楚在应用外键关系之前没有创建table1,所以我试图弄清楚如何强制依赖,并找到以下文章: http://south.aeracode.org/docs/dependencies.html

然后我补充道:

depends_on = (
    ("app2", "0001_inital"),
)

到我的app1 / 0001_initial.py文件。

不幸的是现在我收到以下错误:

south.exceptions.DependsOnUnknownMigrationMigration 'app1:0001_initial' depends on unknown migration 'app2:0001_inital'.

关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:19)

我不确定这是否可以解决您的问题,但您可以添加设置以在运行测试时使用syncdb而不是迁移。将以下行添加到settings.py

SOUTH_TESTS_MIGRATE = False

答案 1 :(得分:5)

您的迁移名称中有一个拼写错误。它应该是:

depends_on = (
    ("app2", "0001_initial"),
)

这个依赖系统对我有用,在你在这里列出完全相同的问题后,然后找到依赖系统South的文档。

答案 2 :(得分:0)

如果在导入目标模块期间出现错误,也会抛出此错误:如果您已经手动构建了迁移,并且您确定文件名与 depends_on needed_by ,请检查引用的文件是否有错误。

此外,将SOUTH_TESTS_MIGRATE设置为False不会解决问题。这只是意味着在您尝试使用迁移之前,您不会看到问题。

http://south.readthedocs.org/en/latest/settings.html

(如果你想加快你的单元测试,这仍然很有用。)