优化Django测试中的fixture加载的最佳方法是什么?
我的Django测试运行得非常慢,但这并不是测试本身的问题。
现在整个过程需要14秒,但其中只有0.1秒是在运行测试。前几秒是在创建表和索引,其余的时间则是在加载项目中的许多fixtures
。
有什么好的方法来解决这个问题吗?我觉得可以指定每个测试加载哪些fixtures
,但大多数测试都需要大部分的fixtures
...
我认为一个可行的解决方案是,如果测试在每次运行后不删除表,那样就不需要每次都创建和填充数据库。大多数测试甚至不往数据库写数据。
有什么好的方法来优化Django测试中的fixture
加载部分吗?谢谢!
(我在使用nose
,其他方面只是普通的Django和sqlite
)
编辑:我应该提到我使用的是内存中的sqlite数据库。我具体想要的是优化测试中的fixture
加载部分。
2 个回答
4
你可以在测试中使用sqlite的内存数据库,这样会非常快。
4
“但我需要大部分它们来进行大部分测试”...
抱歉这样说,但为了加快进度,你得动动脑筋。
“我觉得有办法指定每个测试要加载哪些数据”
看到这句话让我有点担心。你最近有认真看看你的测试吗?
你的测试确实是明确列出了要用的数据。你需要把这个列表缩小一些。