Django:可重用应用程序测试的设置?

gue*_*tli 5 django environment-variables django-testing pycharm

我在 Django 中创建了一个小应用程序,并且 runserver 和 admin 工作正常。

我写了一些可以调用python manage.py test的测试并且测试通过了。

现在我想通过 PyCharm 调用一个特定的测试。

这会失败,如下所示:

/home/guettli/x/venv/bin/python 
   /snap/pycharm-community/179/plugins/python-ce/helpers/pycharm/_jb_pytest_runner.py 
   --path /home/guettli/x/xyz/tests.py
Launching pytest with arguments /home/guettli/x/xyz/tests.py in /home/guettli/x

============================= test session starts ==============================
platform linux -- Python 3.6.9, pytest-5.4.1, py-1.8.1, pluggy-0.13.1 --
cachedir: .pytest_cache
rootdir: /home/guettli/x
collecting ... 
xyz/tests.py:None (xyz/tests.py)
xyz/tests.py:6: in <module>
    from . import views
xyz/views.py:5: in <module>
    from xyz.models import Term, SearchLog, GlobalConfig
xyz/models.py:1: in <module>
    from django.contrib.auth.models import User
venv/lib/python3.6/site-packages/django/contrib/auth/models.py:2: in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
venv/lib/python3.6/site-packages/django/contrib/auth/base_user.py:47: in <module>
    class AbstractBaseUser(models.Model):
venv/lib/python3.6/site-packages/django/db/models/base.py:107: in __new__
    app_config = apps.get_containing_app_config(module)
venv/lib/python3.6/site-packages/django/apps/registry.py:252: in get_containing_app_config
    self.check_apps_ready()
venv/lib/python3.6/site-packages/django/apps/registry.py:134: in check_apps_ready
    settings.INSTALLED_APPS
venv/lib/python3.6/site-packages/django/conf/__init__.py:76: in __getattr__
    self._setup(name)
venv/lib/python3.6/site-packages/django/conf/__init__.py:61: 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.

Assertion failed
collected 0 items / 1 error
Run Code Online (Sandbox Code Playgroud)

我了解背景:我的应用程序xyz是可重用的。它不包含任何设置。该应用程序不知道(也不应该知道)我的项目。但是设置在我的项目中。

如何解决这个问题?

我阅读了很棒的 django 文档,但找不到解决方案。

如何设置DJANGO_SETTINGS_MODULE是否使用“运行”(ctrl-shift-F10)直接从 PyCharm 执行一项特定测试?

jTi*_*Key 4

您可以添加 DJANGO_SETTINGS_MODULE 作为环境变量:

在菜单中:运行 -> 编辑配置 -> 模板 -> Python 测试 -> 单元测试

Pycharm 配置

并删除旧的“测试的单元测试......”条目。