Python **编辑-使用pycharm进行测试时引发的错误

Python **编辑-使用pycharm进行测试时引发的错误,python,django,unit-testing,django-models,pycharm,Python,Django,Unit Testing,Django Models,Pycharm,编辑这篇文章已经编辑过了,因为我已经专注于这个问题,但我还没有解决它 你好, 当我通过pycharm运行测试时,我遇到了一个引发以下错误的问题: django.core.exceptions.ImpropertlyConfigured:请求的设置已安装\u应用程序,但未配置设置。在访问设置之前,必须定义环境变量DJANGO_SETTINGS_MODULE或调用SETTINGS.configure() 问题似乎出在pycharm上,因为我刚刚运行了/manage.py test,测试成功执行 我使

编辑这篇文章已经编辑过了,因为我已经专注于这个问题,但我还没有解决它

你好,

当我通过pycharm运行测试时,我遇到了一个引发以下错误的问题:

django.core.exceptions.ImpropertlyConfigured:请求的设置已安装\u应用程序,但未配置设置。在访问设置之前,必须定义环境变量DJANGO_SETTINGS_MODULE或调用SETTINGS.configure()

问题似乎出在pycharm上,因为我刚刚运行了
/manage.py test
,测试成功执行

我使用pycharm设置的配置有:

  • 脚本路径:/MainFolder/MainProjects/project1 backend/tests/test\u models.py
  • 环境变量:PYTHONUNBUFFERED=1;DJANGO_SETTINGS_MODULE=project1backend.SETTINGS注意此文件所属的文件夹,而不是project1 backend
  • Python解释器:Python 3.8 (MainFolder)~/MainFolder/MainProjects/bin/python
  • 工作目录:/Users/myname/MainFolder/MainProjects/project1后端
  • 将内容根添加到PYTHONPATH:未选中
  • 将源根添加到PYTHONPATH:已选定
编辑测试文件应为
\uuuu init\uuuuuuuuuuuupy
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupy.py
my.env文件位于project1后端文件夹中。我在venv中操作以执行./manage.py测试

#import from Model class
from django.test import SimpleTestCase
from django.db import models

#User model
class User(models.Model):

    email = models.CharField(max_length=256, primary_key=True)
    first_name = models.CharField(max_length=256)
    last_name = models.CharField(max_length=256)

    def __str__(self):
        return self.email # this defaults to the email address


from django.test import TestCase
from app.models import User

class TestModels(TestCase):

    def setUp(self):
      self.user1 = User.objects.create(
          email="m@gmail.com",
          first_name="misha",
          last_name="lee"
      )

    def test_app_user(self):
        self.setUp()
        self.assertTrue(isinstance(self, User)
编辑

*注意,我自己也尝试过“应用程序”,但没有效果

提前感谢您的帮助!注意,我已经查看了PYTHONPATH的答案以及
\uuuu init\uuuu.py
的答案,发现它们没有帮助。不过,我确实认为这与路径有关

我还研究了这个资源:
但是我发现答案并没有解决我的问题。

我花了好几天的时间搜索
,因为我不明白为什么在运行
/manage.py测试时,一切都正常,测试也执行了。似乎设置配置正确(即DJANGO_设置_模块)。然而,当我开始研究错误、调试并找到可能的答案时,我发现Pycharm/pytest没有识别settings.py文件中的设置(或任何相关设置)。甚至在我尝试通过在PyCharm中“编辑”测试的配置来添加环境变量(即DJANGO_设置_模块)之后

解决方案 首先,我通过导航到PyCharm中的
运行/调试配置
,并使用左上角的“-”按钮删除测试,删除了所有以前的测试配置(PyCharm Professional 2020.1)。 在运行测试之前,我必须通过导航到
PyCharm-->首选项-->Plugins
并搜索EnvFile,来使用插件EnvFile。然后,我添加了隐藏的.env文件,用于存储所有环境变量

这让我想到:

 Error raise AppRegistryNotReady("Apps aren't loaded yet.")
              django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我在Django文档的帮助下纠正了这个问题,并添加了Django.setup()来填充应用程序注册表


此外,我发现关于这方面的文档并不多,请特别注意您正在使用的pytest、nosetest等测试类型以及您在tangent中使用的导入语句。此外,请注意TestCase和SimpleTestCase之间的区别,因为后者不需要访问数据库。

您是否将应用程序添加到设置py中的已安装应用程序中?@obayhan我已将“应用程序”添加到已安装应用程序的底部。谢谢你的快速回复。还是给我错误。我相信这与路径有关,但我不知道在哪里?因此您已将
MainFolder
定义为项目根(内容根),并且未定义任何源根。这就是为什么
MainFolder/MainProject/project1 backend
不在sys.path中,并且找不到应用程序的原因。这不是一个理想的设置,但要解决它,请不要将内容根添加到PYTHONPATH,并
project1后端标记为源根。每个父文件夹树中都有“init.py”吗?能否尝试将“from app.models import User”更改为“from..app.models import User”(包括“.”这意味着以前的文件夹?或者您可以尝试完整路径,例如“MainProjects.app.models”
INSTALLED_APPS = [
    'django.contrib.admin',     
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'app.apps.AppConfig'
]
 Error raise AppRegistryNotReady("Apps aren't loaded yet.")
              django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.