如何在生产数据库上运行django单元测试?
我开始采用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单元测试? 的全部内容, 来源链接: utcz.com/qa/417258.html