在 PyCharm 中运行测试如何导致“模型类未声明显式 app_label”错误?

Dav*_*ave 2 python testing django pycharm python-3.x

我使用的是 Django、Python 3.7 和 PyCharm 2018.3.5。我试图通过右键单击测试名称并选择“运行测试:'测试名称'”来在 PyCharm 中运行测试。这会导致以下错误

RuntimeError: Model class appname.models.Label doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
Run Code Online (Sandbox Code Playgroud)

这是有问题的模型,位于我的 models.py 文件的顶部......

class Label(models.Model):
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

    class Meta:
        unique_together = ("name",)
Run Code Online (Sandbox Code Playgroud)

非常奇怪的是,如果我在 PyCharm 之外运行测试(例如在终端命令提示符下使用“python manage.py test”),一切都会正常运行。所以问题似乎是 PyCharm 的一些配置错误。我不清楚如何进一步解决这个问题。以下是我的项目目录结构...

appname
    __init__.py
    __pycache__
    admin.py
    apps.py
    fixtures
    management
    migrations
    models.py
    services.py
    static
    templates
    tests.py
    views.py
manage.py
templates
venv
appname_project
Run Code Online (Sandbox Code Playgroud)

编辑:我将环境变量编辑为以下内容

PYTHONUNBUFFERED=1
DJANGO_DEVELOPMENT=true
DJANGO_SETTINGS_MODULE=appname_project.settings
Run Code Online (Sandbox Code Playgroud)

这是因为我的设置文件是特定于环境的,所以我的开发文件的路径是

appname_project/settings/dev.py
Run Code Online (Sandbox Code Playgroud)

但即使添加上述结果也会导致相同的错误。

Naf*_*war 5

test_runner当使用运行测试的内置选项时,PyCharm 使用自己的选项。大多数时候它无法找到settings.py文件。所以你必须明确定义settings文件。

  1. 转到右上角并从运行配置菜单中选择编辑配置。

  2. 选择运行测试的特定配置。

  3. 单击环境变量。添加 DJANGO_SETTINGS_MODULEwith YOUR_PROJECT.settings(或您正在使用的设置文件的路径)作为值。

  4. 保存并再次运行。

现在应该可以了。

  • 还有另一种方法可以在 PyCharm 中指定设置文件。转到文件 > 设置 > 语言和框架 > Django。在那里您将看到用于指定设置文件的选项。单击它,然后找到您的设置文件。现在这应该适用于每个测试。 (3认同)