优化Django测试中的fixture加载的最佳方法是什么?

9 投票
2 回答
1352 浏览
提问于 2025-04-16 12:00

我的Django测试运行得非常慢,但这并不是测试本身的问题。

现在整个过程需要14秒,但其中只有0.1秒是在运行测试。前几秒是在创建表和索引,其余的时间则是在加载项目中的许多fixtures

有什么好的方法来解决这个问题吗?我觉得可以指定每个测试加载哪些fixtures,但大多数测试都需要大部分的fixtures...

我认为一个可行的解决方案是,如果测试在每次运行后不删除表,那样就不需要每次都创建和填充数据库。大多数测试甚至不往数据库写数据。

有什么好的方法来优化Django测试中的fixture加载部分吗?谢谢!

(我在使用nose,其他方面只是普通的Django和sqlite

编辑:我应该提到我使用的是内存中的sqlite数据库。我具体想要的是优化测试中的fixture加载部分。

2 个回答

4

你可以在测试中使用sqlite的内存数据库,这样会非常快。

4

“但我需要大部分它们来进行大部分测试”...

抱歉这样说,但为了加快进度,你得动动脑筋。

“我觉得有办法指定每个测试要加载哪些数据”

看到这句话让我有点担心。你最近有认真看看你的测试吗?

你的测试确实是明确列出了要用的数据。你需要把这个列表缩小一些。

撰写回答