当前位置: 首页 > 面试题库 >

如何在生产数据库上运行django单元测试?

雷方伟
2023-03-14
问题内容

我开始采用TDD开发态度,并为django应用程序编写单元测试。我知道固定装置,并且知道应该执行测试的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,而我想处理的10百万以上行数据库的json固定装置,此外,此测试是“只读”的。

因此,问题是如何设置测试套件以在生产数据库上运行?我想这就像在某些测试的setUp方法中添加DATABASE_NAME设置一样容易。但是运行测试时,settings.DATABASE_NAME =“ prod_db”导致“ NameError:全局名称'settings'未定义”。此外,http://code.djangoproject.com/ticket/11987中描述了一种风险,即你可能会意外删除生产数据库。

那么,如何在生产数据库上而不是临时数据库上对测试套件运行单个测试,或者甚至更好的是最佳实践是什么?

提前为任何意见加油!


问题答案:

首先,如果要在生产数据库上运行它,那么它就不是一个“单元”测试。

这是一流的批处理作业,需要像一流的生产批处理作业一样对待。

你不会使用Django test命令查看生产数据。它总是创建一个空数据库,该数据库由TestCase中的夹具填充。

你可以使你的生产数据库处理适当的管理命令。这已经正确配置了所有环境,因此你的命令可以仅使用Django ORM来处理数据。

另一种方法是确保配置设置。使用DJANGO_SETTINGS_MODULE环境变量或使用settings.configure()函数创建环境。

然后,你可以导入模型并针对生产数据库执行要执行的处理。

如果愿意,可以将其称为“测试”,但是你正在查看生产数据,因此就获取设置文件和使用正确的ORM配置而言,必须将其视为生产应用程序。



 类似资料:
  • 问题内容: 我的Django单元测试需要很长时间才能运行,因此我正在寻找加快速度的方法。我正在考虑安装SSD,但我也知道它也有缺点。当然,我的代码可以做一些事情,但是我正在寻找结构上的修复方法。由于每次都需要重建/向南迁移数据库,因此即使运行单个测试也很慢。所以这是我的主意 由于我知道测试数据库总是很小,所以为什么不能仅将系统配置为始终将整个测试数据库保留在RAM中?绝对不要触摸磁盘。如何在Dja

  • 问题内容: 是否可以在不设置数据库的情况下编写Django单元测试?我想测试不需要设置数据库的业务逻辑。尽管设置数据库的速度很快,但在某些情况下我真的不需要它。 问题答案: 你可以继承DjangoTestSuiteRunner的子类,并覆盖setup_databases和teardown_databases方法以进行传递。 创建一个新的设置文件,并将TEST_RUNNER设置为刚创建的新类。然后,

  • 问题内容: 我希望在编写用于测试某些数据库条目的单元测试中获得一些建议。 如果找不到记录,则我正在测试的功能会将数据库作为种子。 我似乎不太了解如何进行len测试。我正在使用测试数据库,因此我可以在任何时候都对其进行核对,因此,如果我只需要在函数上强制使用一个空的数据库,就没有问题了。 该函数本身可以正常工作,我只想确保已覆盖该函数。 任何建议都很好。 谢谢! 问题答案: 确实取决于您,有很多方法

  • 问题内容: 在我的django应用程序中,我有一个完成文件上传的视图。核心代码段是这样的 我想对视图进行单元测试。我正计划测试快乐路径和失败路径。即,没有键“ file”的情况,有键“。”的情况。 如何设置幸福道路的发车数据?有人可以告诉我吗? 问题答案: 来自Django文档: 提交文件是一种特殊情况。要发布文件,只需提供文件字段名称作为键,并提供要上传的文件的文件句柄作为值。例如:

  • 使用文档中的以下示例: 如何创建并运行针对此迁移的测试,以确认数据已正确迁移?

  • 我试图在一台机器上连接多个独立的Neo4j实例。 因为我无法找到正确的文档来正确安装Neo4j。 由于我是Neo4j graph db的新手,如果有人能在这方面帮助我,那将非常有帮助。 我使用的是Neo4j版本3.2。2. 下面是我试图在路径下启动新neo4j实例的命令: 我无法启动两个neo4j实例,因为我有两个具有不同端口的文件。 请分享你的想法。