【问题标题】:How to supply SQL functions and views required for testing Django app如何提供测试 Django 应用程序所需的 SQL 函数和视图
【发布时间】:2013-10-14 23:10:16
【问题描述】:

我根据Django docs创建了一个文件<APP>/<MODEL>.sql,以便在syncdb运行后利用钩子传递任意SQL。这个文件里面有两个 PostgreSQL 函数声明和一个创建数据库视图的语句。这在生产中运行良好,但是——正如文档所说——代码没有为测试数据库运行,因为建议使用固定装置。现在我的单元测试缺少关键的数据库视图函数,因此失败了。

如何测试依赖原始 sql 函数/视图的代码?

更新

我找到了this ticket,它直接涉及这个问题,并提出了一个小的解决方法。

【问题讨论】:

    标签: sql django unit-testing testing django-postgresql


    【解决方案1】:

    我发现处理此问题的最佳方法是将自定义 SQL 代码放入 Django 的迁移中。

    Django 和 South(它是 Django 自己的迁移框架的前身)都提供了创建自定义(即空)迁移的命令。可以将用于创建数据库视图或函数的代码放入空迁移中,并且在迁移新安装的项目或运行测试套件时运行。

    可以在 here 找到有关如何使用 South 对数据库视图使用自定义迁移的教程。 Django 自己的迁移框架中的语法有点不同,但 documentation about RunSQL 解释了一切。

    【讨论】:

      【解决方案2】:

      只需像 sql 一样在本机运行它们。

      使用sqlcustom

      不要打扰他们;您可能会发现自己游到上游去尝试并通过 ORM 充分利用这些功能和视图。

      考虑另一个更适合使用原生 sql 的 python 框架(我敢说)。

      【讨论】:

      • 很抱歉,您的回答都没有真正解决我的问题。我将如何在不违反 DRY 的情况下本地运行 sql? sqlcustom 打印上述 SQL 文件的内容,但不能帮助我使用自定义 sql 语句填充我的测试数据库。
      • 也许答案是“不。没有。”
      猜你喜欢
      • 1970-01-01
      • 2017-07-03
      • 2021-12-19
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多