Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在PyCharm中运行测试如何导致“模型类未声明显式应用程序标签”错误?_Python_Django_Python 3.x_Testing_Pycharm - Fatal编程技术网

Python 在PyCharm中运行测试如何导致“模型类未声明显式应用程序标签”错误?

Python 在PyCharm中运行测试如何导致“模型类未声明显式应用程序标签”错误?,python,django,python-3.x,testing,pycharm,Python,Django,Python 3.x,Testing,Pycharm,我正在使用Django、Python3.7和PyCharm 2018.3.5。我试图在PyCharm中运行测试,方法是右键单击测试名称并选择RunTest:“test name”。这将导致以下错误 RuntimeError: Model class appname.models.Label doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS. 这就是所讨论的模型,在我的model

我正在使用Django、Python3.7和PyCharm 2018.3.5。我试图在PyCharm中运行测试,方法是右键单击测试名称并选择RunTest:“test name”。这将导致以下错误

RuntimeError: Model class appname.models.Label doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
这就是所讨论的模型,在我的models.py文件的顶部

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

    def __str__(self):
        return self.name

    class Meta:
        unique_together = ("name",)
非常奇怪的是,如果我在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
编辑:我将环境变量编辑为以下内容

PYTHONUNBUFFERED=1
DJANGO_DEVELOPMENT=true
DJANGO_SETTINGS_MODULE=appname_project.settings
这是因为我的设置文件是特定于环境的,所以我的dev one的路径是

appname_project/settings/dev.py
但是,即使添加上述内容也会导致相同的错误。

当使用运行测试的内置选项时,PyCharm使用自己的测试运行程序。大多数情况下,它无法找到settings.py文件。所以您必须显式地定义设置文件

在右上角,从运行中选择编辑配置 配置菜单

选择要运行的特定配置 你的测试

单击环境变量。添加 DJANGO\u设置\u模块与您的\u项目。设置或路径 将文件用作值的设置

保存并运行 再一次
现在应该可以了。

在我的情况下,原因是不同的

PyCharm确实有自己的测试跑步者,就像@Nafees Anwar所说的,在我的例子中,它消除了真正的错误,而且spit这并没有声明一个明确的应用标签胡说八道

在我的例子中,真正的原因是,我将SECRET_KEY设置为None,我希望是显式的,并且dever分配默认值


要验证真正的错误,请尝试从PyCharm运行manage.py,而不是运行测试。然后它将打印您的真实错误。

您好,我编辑了我的问题,按照您的指示包含了我正在使用的确切环境变量。不幸的是,即使在保存这些变量并重新运行测试之后,我也会遇到相同的错误。设置是否是appname\u项目中包含_init__;.py文件的包目录?您应该添加DJANGO_SETTINGS_MODULE=appname_project.SETTINGS.devHi,不,设置文件夹中没有init.py文件,但是当我将DJANGO_SETTINGS_模块更改为您建议的工作模式时。所以也许我应该问另一个问题,但是有没有什么地方可以放置这些变量,这样我就不必为我运行的每个测试创建这些环境变量?还有另一种方法可以在PyCharm中指定设置文件。转到文件>设置>语言和框架>Django。在这里,您将看到用于指定设置文件的选项。单击该按钮,找到您的设置文件。现在,这应该适用于每个测试。我的情况就是这样,因为我们正在做一些花哨的事情,从环境变量中加载秘密,这是由于pycharm测试运行程序而被绕过的