gpt4 book ai didi

django - 如何在生产数据库的副本上运行 Django 测试?

转载 作者:行者123 更新时间:2023-11-28 19:42:38 40 4
gpt4 key购买 nike

我已经为我的 Django 应用程序编写了一系列测试,并希望在我的生产数据库的副本上运行它们。

据我所知,最好的方法是使用 fixture loading像这样:

  • 运行 manage.py dumpdata -o app.dump
  • 将生成的 app.dump 文件移动到 [app name] 文件夹中的 fixtures 目录
  • 在我的 django.test.TestCase 子类上指定一个 'fixtures' 类属性

但是,这种方法很麻烦。我有多个应用程序,每次我想测试我的应用程序时,为每个应用程序运行 manage.py dumpdata 并手动移动 fixtures 文件是一件很痛苦的事情。

有没有更简单的方法来自动生成我的整个生产数据库的副本并针对它测试我的 Django 应用程序?

最佳答案

通常,不鼓励针对实时数据库或实时数据库的副本进行测试。为什么?因为测试需要是可预测的。当您制作实时数据库的副本时,输入变得不可预测。第二个问题是在live site上明显不能测试,所以需要clone数据。对于大小超过几 MB 的任何内容,这都很慢。

即使数据库很小,dumpdata 后跟 loaddata 也不是办法。这是因为默认情况下 dumpdata 以 JSON 格式导出,生成开销很大,更不用说使数据文件非常庞大。使用 loaddata 导入甚至更慢。

制作克隆的唯一现实方法是使用内置导出/导入机制的数据库引擎。在 sqlite 的情况下,它只是复制 db 文件。对于 mysql,它是 SELECT INTO OUTFILE,然后是 LOAD DATA INFILE。对于 postgresql,它是 COPY TO,然后是 COPY FROM,依此类推。

所有这些导出/导入命令都可以使用 django 中可用的低级连接对象执行,因此可用于加载固定装置。

关于django - 如何在生产数据库的副本上运行 Django 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814907/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com