我们试图覆盖一个旧的大型项目的测试,该项目在数据库中有超过500个表,并且浪费了太多时间来创建数据库(我的RMBP超过1小时)和数据库迁移。
我们使用PostgreSQL作为数据库,导致某些GIS需要服务,因此很难用SQLite代替它。
我可以做些什么来减少测试准备的时间?
答案 0 :(得分:2)
您可以使用django-nose并重复使用数据库:
REUSE_DB=1 ./manage.py test
请注意,您的测试不会在数据库中留下任何垃圾。有关详细信息,请查看documentation。
答案 1 :(得分:0)
在某些时候,我最终创建了一个事务管理中间件,它将拦截事务调用,以便所有测试都在事务中运行,然后事务在最后回滚。
另一种方法是在每次测试开始时加载二进制数据库转储,然后删除数据库并在测试之间重新创建。创建好的数据库后,使用xtrabackup创建它的转储。然后,在每个测试设置功能中,删除并创建数据库,然后使用xtrabackup加载转储。因为它是二进制转储,所以它的加载速度相当快。