【问题标题】:How to use an existing DB for unit testing in Django?如何在 Django 中使用现有数据库进行单元测试?
【发布时间】:2022-02-09 19:46:39
【问题描述】:

我已经使用 Django Rest Framework 创建了一个 REST-API 应用程序。

API 只是将数据从现有的只读 Postgres DB 转换为 REST-API 以供前端使用。

现在我需要编写一些单元测试来测试应用程序。 由于涉及到很多表和视图,我无法创建模拟数据和测试。

有没有办法使用现有的数据库(Postgres)在 Django 中运行测试而不创建任何模拟数据?

注意:我已经阅读了很多与我的问题相关的 SO 帖子,但它们都不像旧版本的 Django 那样有效。

【问题讨论】:

    标签: python-3.x django postgresql django-rest-framework django-tests


    【解决方案1】:

    您不能使用 Django 测试命令来查看生产数据。它总是创建一个空数据库,该数据库由 TestCase 中的固定装置填充。

    这不是一个好的做法,不应该这样做。但是如果你想达到你所说的,你可以试试这个-

    DATABASES = {
      'default': {
         ...
         'TEST': {
            'NAME': 'your prod db'
         }
    }
    

    在您的 settings.py 文件中。 (这可能会干扰您的生产数据库)

    我会建议你使用假设和工厂来生成数据来编写测试,因为从长远来看它会帮助你并且是万无一失的。

    不过,您的建议不会被称为测试。因此,重新考虑为您的应用程序编写测试将对您有所帮助。

    【讨论】:

      【解决方案2】:

      你可以在你的 settings.py 中做这样的事情

      import sys
      if 'test' in sys.argv:
          DATABASES['default'] = {
              # your default database credentials
          }
      

      【讨论】:

        猜你喜欢
        • 2017-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        • 1970-01-01
        • 2011-09-09
        相关资源
        最近更新 更多