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