Django针对只读数据库进行测试

Django针对只读数据库进行测试,django,testing,integration-testing,Django,Testing,Integration Testing,我正在寻找一些关于如何在这个特定场景中编写测试的最佳实践建议 我有一个DjangoAPI,它运行在postgres数据库(我可以控制我的服务器)和远程只读MySQL数据库上。只读数据库是由外部服务提供的,他们确实提供了一个非常自由的API来将数据写入数据库(因此我们覆盖了.save方法来写入API,而不是直接使用数据库),但这都是生产数据,所以我不想在测试中弄乱它 人们有没有想过如何组织这个项目,以便它建立一个类似的MySQL数据库,或者只是不断地模拟每次写入(在某种程度上,编写API端点集成测

我正在寻找一些关于如何在这个特定场景中编写测试的最佳实践建议

我有一个DjangoAPI,它运行在postgres数据库(我可以控制我的服务器)和远程只读MySQL数据库上。只读数据库是由外部服务提供的,他们确实提供了一个非常自由的API来将数据写入数据库(因此我们覆盖了
.save
方法来写入API,而不是直接使用数据库),但这都是生产数据,所以我不想在测试中弄乱它

人们有没有想过如何组织这个项目,以便它建立一个类似的MySQL数据库,或者只是不断地模拟每次写入(在某种程度上,编写API端点集成测试仍然是可以做到的)


如果需要,很乐意提供更多细节

我建议您遵循运行测试的常见做法:

  • 将现有数据库中的一小部分数据转储到JSON格式的文件中
  • 为每个测试运行创建一个临时的SQLite/MySQL数据库,并将其保存

  • 在本例中,您可以对测试数据库做任何您想做的事情,因为它会被丢弃。此外,您的测试不会依赖于生产环境中的数据。

    对于存储极其安全信息的公司,可能不允许创建夹具。为从数百个表中提取的高度安全的数据创建固定装置,然后对其进行模糊处理,这是一项繁忙的工作,当我们只需要使用实际的数据库连接时,这绝对是浪费时间。