Django测试在测试数据库创建上浪费了太多时间

时间:2015-05-25 02:34:08

标签: python django testing django-testing

我们试图覆盖一个旧的大型项目的测试,该项目在数据库中有超过500个表,并且浪费了太多时间来创建数据库(我的RMBP超过1小时)和数据库迁移。

我们使用PostgreSQL作为数据库,导致某些GIS需要服务,因此很难用SQLite代替它。

我可以做些什么来减少测试准备的时间?

2 个答案:

答案 0 :(得分:2)

您可以使用django-nose并重复使用数据库:

REUSE_DB=1 ./manage.py test

请注意,您的测试不会在数据库中留下任何垃圾。有关详细信息,请查看documentation

答案 1 :(得分:0)

在某些时候,我最终创建了一个事务管理中间件,它将拦截事务调用,以便所有测试都在事务中运行,然后事务在最后回滚。

另一种方法是在每次测试开始时加载二进制数据库转储,然后删除数据库并在测试之间重新创建。创建好的数据库后,使用xtrabackup创建它的转储。然后,在每个测试设置功能中,删除并创建数据库,然后使用xtrabackup加载转储。因为它是二进制转储,所以它的加载速度相当快。