如何让 Django 在运行单元测试时将 sqlite3 db 文件加载到内存中,而不是生成新数据库并从头开始初始化模式?
我有一些大型 JSON 固定装置,Django 需要一段时间才能为每个测试加载。我想的一种解决方法是生成一个“模板”sqlite3 数据库,将所有模式和夹具加载到其中,然后简单地将其用于每个单元测试,绕过所有夹具加载。显然,每当我更改架构或固定装置时,我都必须更新此模板,但如果这意味着每个单元测试将需要几秒钟而不是几分钟来运行,那么这是一个可以接受的折衷。
我已经完成了第一步,生成了模板数据库,方法是: * 在“TEST_NAME”数据库设置字段中指定 db 文件名 * 运行一个什么都不做的特定单元测试,所以 Django 只会生成模式和加载固定装置 * monkeypatched django。 test.running.DiscoverRunner.teardown_databases 什么都不做,所以我可以检索 db 文件并将其保存为我的数据库模板
但现在我被困在如何让 Django 使用这个文件上。如果我将文件保留为我的 TEST_NAME 参数,Django 将简单地删除它并重新生成它......但还会继续将它写入文件系统,使其比内存中的 Sqlite3 数据库慢近 10 倍。