关于django nose和south在多数据库下的问题
我有一个Django项目,使用了一个数据库(默认的)。我安装了South来生成迁移脚本,还用了nose作为测试框架。模型都是基于这个数据库建立的,所有测试都顺利通过了。
后来,我需要连接一个第二个数据库(旧的),我也把它添加到了DATABASES配置中。我是通过原始SQL来访问这个数据库,而没有使用模型。在尝试运行之前成功的测试时,我注意到:
- nose也会为旧数据库创建一个测试数据库
- 默认的Django表(比如auth_...等)也会在这个数据库中被创建
- South会对旧数据库运行所有的迁移脚本,但这些脚本会失败
我想要的是禁用旧数据库测试的创建以及在其上运行迁移脚本。理想情况下,我希望自己通过原始SQL的创建和插入语句来创建旧数据库中的表。这可能吗?
谢谢你的帮助。
1 个回答
0
如果你想要简单一点的方法,可以考虑自己写一个测试运行管理命令。你可以选择覆盖现有的命令,或者单独创建一个命令,按照你想要的方式来运行。
关于如何创建自定义管理命令的详细说明,可以在官方的Django 文档中找到。此外,你还可以在django-test-extensions项目中找到一个不错的例子,展示了如何覆盖默认的“测试”命令。