Python 在PyCharm中运行测试如何导致“模型类未声明显式应用程序标签”错误?
我正在使用Django、Python3.7和PyCharm 2018.3.5。我试图在PyCharm中运行测试,方法是右键单击测试名称并选择RunTest:“test name”。这将导致以下错误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
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测试运行程序而被绕过的