【问题标题】:Pycharm - no django tests found but run in consolePycharm - 没有找到 django 测试但在控制台中运行
【发布时间】:2020-08-13 00:23:07
【问题描述】:

我按照这个教程https://docs.djangoproject.com/en/3.0/intro/tutorial05/

可以通过命令运行测试(polls 是应用程序名称)

python manage.py test polls

但是在 PyCharm IDEA 下,当我点击绿色箭头(第 21-22 行)时。

消息是“未找到测试”

堆栈跟踪对我来说是乱码

Traceback(最近一次调用最后一次):文件“/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pycharm/_jb_unittest_runner.py", 第 35 行,在 sys.exit(main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING)) 文件 "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py", 第 100 行,在 init 中 self.parseArgs(argv) 文件“/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py”, 第 147 行,在 parseArgs 中 self.createTests() 文件“/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/main.py”, 第 159 行,在 createTests 中 self.module)文件“/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py”, 第 220 行,在 loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] 文件 "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", 第 220 行,在 suites = [self.loadTestsFromName(name, module) for name in names] 文件 "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", 第 154 行,在 loadTestsFromName module = import(module_name) 文件 "/Users/raychenon/Projects/python/django/mysite/polls/test_views.py", 第 8 行,在 从 .models 导入问题文件“/Users/raychenon/Projects/python/django/mysite/polls/models.py”,行 8、在 类问题(models.Model):文件“/usr/local/lib/python3.7/site-packages/django/db/models/base.py”, 第 107 行,在 中 app_config = apps.get_ contains_app_config(module) 文件“/usr/local/lib/python3.7/site-packages/django/apps/registry.py”,行 252,在 get_ contains_app_config 中 self.check_apps_ready() 文件“/usr/local/lib/python3.7/site-packages/django/apps/registry.py”,行 134,在 check_apps_ready settings.INSTALLED_APPS 文件“/usr/local/lib/python3.7/site-packages/django/conf/init.py”,行 76,在 getattr self._setup(name) 文件“/usr/local/lib/python3.7/site-packages/django/conf/init.py”,行 61、在_setup中 % (desc, ENVIRONMENT_VARIABLE)) django.core.exceptions.ImproperlyConfigured:请求的设置 INSTALLED_APPS,但未配置设置。你必须要么 定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure() 在访问设置之前。

进程以退出代码 1 结束

空套房

PyCharm IDE 设置

我的 python 解释器设置正确

研究

我已经看过 Pycharm - no tests were found? 了。不相关的错误,我的测试函数名称以test_*开头

【问题讨论】:

  • 你的python解释器设置正确了吗?
  • 当然,James,我的 IDE 可以运行 Python,但找不到 Django 依赖项
  • 这意味着您的解释器没有正确设置。
  • 嗨@RaymondChenon,您是否可能接受了错误的答案?即使您说您的口译员很好,那个人也只是告诉您设置口译员。我之所以这么问,是因为我看到有人对我的答案投了赞成票,同时你也接受了这个答案。

标签: python python-3.x django pycharm


【解决方案1】:

我们在使用 Django 时使用 manage.py 的原因是它为我们管理环境。

但是使用 pycharm,除非您手动指定内容,否则其中包含测试足迹的 python 文件(导入 unittest 并具有以“test_”开头的方法名称)只是我们可以在没有任何外部依赖项的情况下测试的模块。

如果您使用 Django 等框架,那么您需要遵守他们的规则。你要么使用他们的工具,要么手动设置任何需要的东西。

我不知道 pycharm 当时是否有这种支持,但这个pycharm/django-support 可能会有所帮助。

如果这不能满足您的需求,那么您将需要处理Django Settings 中提到的一些事情(如果您使用旧版本,请检查其他版本,如果您来自未来,请检查新版本)。您的错误消息已经提到了这一点。

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.
  • 您可以在 pycharm 中打开项目设置并在环境变量中添加此键值: DJANGO_SETTINGS_MODULE=mysite.settings

  • 或在您的代码中任何需要的地方使用它。 (详情请查看设置页面)

    from django.conf import settings
    settings.configure(DEBUG=True)

【讨论】:

    【解决方案2】:

    根据您说找不到 django 依赖项的评论,我怀疑您没有为您的项目正确设置 python 解释器。

    例如。如果你使用 virtualenv,你需要设置你的 python 解释器指向你 virtualenv 中的 python bin,这样 Pycharm 才能找到你的包。

    例如。下面的照片显示了我的“pmas”virtualenv 的 python 解释器。

    【讨论】:

      【解决方案3】:

      你可以试试

      export DJANGO_SETTINGS_MODULE=mysites.settings
      
      here, mysites is name of Django project where settings.py is available
      

      在运行独立 python 脚本之前将上面的行粘贴到 bash shell 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-31
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        相关资源
        最近更新 更多