我正试图通过post commit hook从subversion提供与我的django应用程序的集成。
我有一个django测试用例(unittest.TestCase的子类),它(a)将一些记录插入表中,(b)生成一个svn提交,(c)svn commit运行一个使用我的django的钩子模型查找信息。
我正在使用sqlite3数据库。测试不使用:memory:db,它使用的是真实文件。我已经修改了django测试代码(用于调试此问题),以避免在完成后删除测试数据库,以便我可以检查它。
测试代码转储model.MyModel.objects.all(),记录位于(a)和(b)之间。
当钩子在(c)处触发时,它也会转储模型并且没有记录。在测试运行后手动检查数据库时,没有记录。
django测试框架中是否存在未将记录提交到db文件的内容?
澄清 :( d)结束测试用例。因此,svn commit钩子在测试用例终止之前运行,并且在任何django db清理代码应该运行之前运行。
额外信息:我在(b)和(b)之间添加了15秒的延迟,以便我可以在测试过程中手动检查db文件。记录不在文件中。
答案 0 :(得分:5)
您使用的是Django主干吗?最近的更改(Changeset 9756)在事务中运行测试,然后回滚。这是登记注释:
已修复#8138 - 已更改 django.test.TestCase进行回滚测试 (当数据库支持它时) 而不是冲洗和重新加载 数据库。这可以大大地 减少大型运行所需的时间 测试套件。
答案 1 :(得分:0)
测试框架没有将数据保存到数据库,测试完成后会清理数据。