将存储过程加载到 Django 单元测试数据库中的最佳方法是什么?

Mic*_*rry 2 django postgresql selenium unit-testing stored-procedures

我有一些我的硒测试将依赖的 Postgres 存储过程。在开发中,我用脚本中的一行加载它们:

cat stored_procedures.sql | python manage.py dbshell

这在单元测试时不起作用,因为一个新的数据库是从头开始创建的。如何在运行单元测试之前将保存在文件中的存储过程加载到测试数据库中?

s_m*_*art 5

我认为你有几种方法可以做到这一点。在我看来,最好的解决方案是使用自定义 SQL 添加迁移。将来,您不仅需要在开发阶段进行迁移,还需要在生产阶段进行迁移。因此,如果您将更改存储到 DB 的几个地方,那么部署过程就不清楚了。

其他方式 - 只是将 SQL 的执行添加到setUptestCase 的方法中。

额外迁移

您应该创建一个新的空迁移 ./manage.py makemigrations --empty myApp

将您的 SQL 代码添加到operations列表中

operations = [ migrations.RunSQL('RAW SQL CODE') ]