【问题标题】:Does South foul up the Django test runner framework?South 是否破坏了 Django 测试运行程序框架?
【发布时间】:2011-10-17 12:27:24
【问题描述】:

我有一个 Django 项目,我在其中添加了 South 应用程序,以使数据库迁移更容易。

我在项目的几个有限的地方使用 Django 单元测试框架,这意味着我不定期运行测试。我最近为代码的新部分编写了一些新测试,并尝试运行它们。我收到以下错误:

django.db.utils.DatabaseError: no such table: auth_permission

回溯提到了一些 South 文件(例如 /Library/Python/2.7/site-packages/south/management/commands/test.py)。 South 会不会影响到测试运行器?

【问题讨论】:

  • @SkylarSaveland:好的。如果您有更详细的信息,那将很有帮助。
  • 我的问题是 south 覆盖了测试运行器。在 installed_apps 中将 django-nose 放在南之后解决了我的问题。不过,我们的迁移工具会尝试接管我们的测试运行程序,这很烦人。

标签: django unit-testing django-south


【解决方案1】:

可能——无疑我在某处做错了什么,但 South 的文档在这里提到了可能的问题:

我将 SOUTH_TESTS_MIGRATE = False 添加到我的 settings.py 文件中,我的测试再次运行良好。

但是,我的测试目前不涉及数据库,所以我可能需要重新访问。

【讨论】:

  • 同样的问题,添加SOUTH_TESTS_MIGRATE = False 对我有用。我很好奇是什么导致了这个问题......
  • 同样的问题,但这并没有解决我的问题。你知道为什么这仍然发生在我身上吗?
  • 我忘了告诉我我也试过this但没有成功...
  • @marianobianchi:我不知道我害怕,还没有重新审视它。我建议你问一个问题,包括你的具体情况。
  • 一个常见的原因是维护迁移顺序。通常说,app1 的迁移 #5 需要在 app3 的迁移 #2 之前运行。 south / django 1.8 中有添加依赖项的工具,但大多数人忽略了它们,因为本地环境不会从头开始添加迁移.. 只有最新的未应用的迁移。因此,在构建新迁移时,您很少会遇到迁移顺序问题。只有像测试数据库一样从步骤 0 执行所有迁移,您才会开始意识到这些问题。唯一的解决方案是添加应用间迁移依赖项。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2010-10-02
  • 1970-01-01
  • 2013-08-04
相关资源
最近更新 更多