【问题标题】:How can run django tests in Pycharm Pro, getting ImproperlyConfigured and AppRegistryNotReady errors如何在 Pycharm Pro 中运行 django 测试,得到 ImproperlyConfigured 和 AppRegistryNotReady 错误
【发布时间】:2019-11-02 21:12:04
【问题描述】:

我在 PyCharm Pro 中运行 django 测试时遇到问题。

  1. 我可以正常运行python manage.py runserver
  2. 我可以migratemakemigrationsmanage.py test 就好了。实际上,manage.py 的所有内容都按预期运行。

每当我在 PyCharm 中运行测试时(通过单击绿色运行按钮),我都会收到此错误:

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

我已经做了几件事来解决这个问题:

  1. 我有,在我的测试文件中,把这个:

    import os os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'mysite 是我保证的正确目录)

  2. 我有一个设置文件和一个 wsgi 文件,而我的 wsgi 文件确实设置了 DJANGO_SETTINGS_MODULE:

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

    application = get_wsgi_application()

  3. 唯一让我摆脱这个错误的方法是通过转到Edit Configuations -> Environment -> Environment Variables 并在那里添加DJANGO_SETTINGS_MODULE 来设置该测试类的配置。这只会给我一个不同的错误:

    django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

    另外,我必须为每个测试类执行此操作并且我不能在该类中运行单个测试,而是必须在该类中运行整个测试套件班级。不是一个好的解决方案...

  4. 我已经手动(在 virtualenv 中)运行 export DJANGO_SETTINGS_MODULE=mysite.settings。这并没有改变任何东西。

所以,我没有想法,并遵循了我能找到的关于 SO 的所有建议。在 Pycharm 中我还有其他事情要做吗?同样,cmdline 工作正常,但我真的不想以这种方式运行测试 - 另外,我无法调试。

编辑:值得注意的是,我在服务器运行时正在运行单元测试(这应该没有什么区别),而且我的 python 解释器也指向了我的 virtualenv 中的那个。

【问题讨论】:

    标签: python django pycharm django-testing django-tests


    【解决方案1】:

    尝试打开运行/调试配置窗口(您应该在顶部工具栏中找到它,点击播放/调试按钮附近的下拉菜单和编辑配置) 从这里,您应该会看到一个包含现有已保存配置的列表,其中最后一个元素应该是 Templates。在模板下搜索 Django 测试。在环境部分,将DJANGO_SETTINGS_MODULE=mysite.settings 添加到环境变量。下次您运行运行/调试配置中不存在的测试时,将使用带有设置模块集的模板。

    如果我是你,我会删除所有现有的测试配置。另外,我从您的第 3 点怀疑,您可能配置了 python 测试而不是 Django 测试(这就是为什么您有错误 django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet,因为没有加载 Django)。如果你有它,也删除它。应用配置并重试运行测试。

    运行测试时,确保运行的是 Django 测试,而不是 python 测试(您应该在运行部分和工具栏的下拉列表中的测试名称附近看到 Django 徽标)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2016-10-29
      • 2020-01-28
      • 1970-01-01
      • 2018-04-20
      相关资源
      最近更新 更多