【问题标题】:Error With South When Running Unit Tests Using Nose使用鼻子运行单元测试时出现南方错误
【发布时间】:2011-07-21 01:35:39
【问题描述】:

我在让 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'.

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

【问题讨论】:

  • 不确定我是否能帮上大忙,但现在我发现了鼻子!我已经知道了 south,但是因为我不知道nose,所以我推出了自己的测试框架。对于南错误,文件是否存在于/app2/migrations/0001_initial.py?
  • 是的,迁移确实存在。

标签: django migration nose django-south


【解决方案1】:

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

SOUTH_TESTS_MIGRATE = False

【讨论】:

  • 谢谢!这帮助了很多。我很想选择这个作为答案,但我真的很想知道我是否可以让迁移工作。
【解决方案2】:

您所依赖的迁移名称中有错字。应该是:

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

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

【讨论】:

  • 实际上我没有测试过这个,因为我后来解决了这个问题,但我肯定有一个错字!
【解决方案3】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2013-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多