【问题标题】:django-pytest is not using configs mentioned in pytest.inidjango-pytest 没有使用 pytest.ini 中提到的配置
【发布时间】:2020-07-08 09:07:33
【问题描述】:

我将 pytest-django 用于我的 django 应用程序的单元测试用例。我在根目录(与 manage.py 相同级别)中创建了 pytest.ini,配置如下:

[pytest]
DJANGO_SETTINGS_MDOULE = mysite.settings
python_files = tests.py test_*.py *_tests.py
addopts = --reuse-db

每当我在根目录中运行命令 pytest 时,都会出现以下错误:

ImportError while loading conftest '/Users/aakash/Desktop/experiments/repos/organonconnect/conftest.py'.
conftest.py:4: in <module>
    from django.contrib.auth.models import User, Group
../venv/lib/python3.7/site-packages/django/contrib/auth/models.py:2: in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
../venv/lib/python3.7/site-packages/django/contrib/auth/base_user.py:47: in <module>
    class AbstractBaseUser(models.Model):
../venv/lib/python3.7/site-packages/django/db/models/base.py:103: in __new__
    app_config = apps.get_containing_app_config(module)
../venv/lib/python3.7/site-packages/django/apps/registry.py:252: in get_containing_app_config
    self.check_apps_ready()
../venv/lib/python3.7/site-packages/django/apps/registry.py:134: in check_apps_ready
    settings.INSTALLED_APPS
../venv/lib/python3.7/site-packages/django/conf/__init__.py:79: in __getattr__
    self._setup(name)
../venv/lib/python3.7/site-packages/django/conf/__init__.py:64: in _setup
    % (desc, ENVIRONMENT_VARIABLE))
E   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.

但是,每当我运行 pytest --ds=mysite.settings 时,它都可以正常工作,但没有 pytest.ini 中提到的配置。

我创建了一个与 pytest.ini 相同级别的 conftest.py,并且我使用的是 Python 3.7.7、pytest-5.4.1、py-1.8.1、pluggy-0.13.1

我做错了什么?任何帮助,将不胜感激。提前致谢!

【问题讨论】:

    标签: python django pytest-django


    【解决方案1】:
    django_find_project = True
    

    将此添加到您的pytest.ini

    编辑: 您的 pytest.ini 中的 DJANGO_SETTINGS_MODULE 似乎拼写错误。请修复它。

    【讨论】:

    • 我在 pytest.ini 文件的 pytest 节下添加了django_find_project = True。那是对的吗?尽管如此,它还是给了我同样的错误。关于设置模块,我的项目被称为 mysite 所以它是正确的。很抱歉描述中的混乱,我会改变它。
    • 请发布您的conftest.py。我认为其中有一个错误。 编辑:我改了答案,请查阅。
    • 谢谢!我现在注意到错字了,它现在工作正常。我觉得自己很愚蠢,无论如何,非常感谢。:)
    【解决方案2】:

    在选择要在测试中使用的 settings.py 时,Pytest 具有优先顺序,并且 pytest.ini 中的设置仅用作最后的手段。

    Pytest 在运行测试时首先查看--ds 设置,如果未设置,则使用环境变量DJANGO_SETTINGS_MODULE,如果也未设置,则使用pytest.ini 文件中设置的设置。

    来源:https://pytest-django.readthedocs.io/en/latest/configuring_django.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 2018-12-23
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多