Django 仅使用 pycharm 测试错误 - 不是终端 |应用尚未加载

Posted

技术标签:

【中文标题】Django 仅使用 pycharm 测试错误 - 不是终端 |应用尚未加载【英文标题】:Django test error only with pycharm - Not the terminal | apps aren't loaded yet 【发布时间】:2016-10-10 09:06:16 【问题描述】:

使用 Pycharm,我得到了一些不同的结果,然后从终端运行命令。我注意到,在更新视图后,仅在从 IDE 运行测试时出现“应用程序尚未加载”异常。

如果我通过终端“python3 manage.py test”运行测试,没有问题。

IDE 运行测试这个视图文件没有问题

def wine_data(request):
    return HttpResponse("<html><title>Wine Data</title></html>")

如果我将视图文件更改为:

def wine_data(request):
    return render(request, 'wine_data.html')

我收到此错误(仅在从 IDE 运行时)

/home/codeamend/Projects/python/OldBullTavern/venv/bin/python /opt/pycharm-professional/helpers/pycharm/utrunner.py /home/codeamend/Projects/python/OldBullTavern/obt/wine/tests.py true 上午 11:38 开始测试...

错误回溯(最近一次调用最后一次):文件 "/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/utils.py", 第 86 行,在 getitem 中 return self._engines[alias] KeyError: 'django'

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 "/home/codeamend/Projects/python/OldBullTavern/obt/wine/tests.py", 第 16 行,在 test_wine_data_loads_correct_html 响应 = wine_data(请求)文件“/home/codeamend/Projects/python/OldBullTavern/obt/wine/views.py”, 第 6 行,在 wine_data 中 返回渲染(请求,'wine_data.html')文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/shortcuts.py”, 第 67 行,在渲染中 模板名称,上下文,请求=请求,使用=使用)文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/loader.py”, 第 96 行,在 render_to_string 中 模板=get_template(模板名称,使用=使用)文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/loader.py”, 第 26 行,在 get_template 中 引擎= _engine_list(使用)文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/loader.py”, 第 143 行,在 _engine_list 中 返回engines.all() 如果using is None else [engines[using]] File "/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/utils.py" , 第 110 行,总共 return [self[alias] for alias in self] File "/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/utils.py", 第 110 行,在 return [self[alias] for alias in self] File "/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/utils.py", 第 101 行,在 getitem 中 引擎=engine_cls(参数)文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/backends/django.py”, 第 31 行,在 init 中 options['libraries'] = self.get_templatetag_libraries(libraries) 文件 “/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/backends/django.py”, 第 49 行,在 get_templatetag_libraries 中 库 = get_installed_libraries() 文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/template/backends/django.py”, 第 132 行,在 get_installed_libraries 中 对于apps.get_app_configs()中的app_config)文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/apps/registry.py”, 第 137 行,在 get_app_configs 中 self.check_apps_ready() 文件“/home/codeamend/Projects/python/OldBullTavern/venv/lib/python3.5/site-packages/django/apps/registry.py”, 第 124 行,在 check_apps_ready raise AppRegistryNotReady("应用尚未加载。") django.core.exceptions.AppRegistryNotReady: 应用尚未加载。

进程以退出代码 0 结束

有什么想法吗?

【问题讨论】:

所以,您正在寻找的是能够从您的 IDE 运行单元测试(涉及 Django 的东西)(就像您通过 manage.py test 运行它一样) .您如何尝试运行它(从 IDE 控制台或通过右键单击它)?我猜你有 Pycharm 社区(未付费)版? FWIW,我在上周工作的 PyCharm 专业版中遇到了这个问题。还在努力。 好吧,从 2017.1.3 降级到 2017.1.2 修复了我的问题,所以这没有帮助。 【参考方案1】:

这似乎是虚拟环境加载错误。您是否将正确的虚拟环境应用于您的测试环境?检查这篇文章并尝试再次运行它。 http://exponential.io/blog/2015/02/10/configure-pycharm-to-use-virtualenv/

另外,如果您正在测试正确的模板加载或 GET 请求,请随时查看my tutorial。

【讨论】:

【参考方案2】:

您的测试是否有正确的“工作目录”值和“目标”?

我在行为测试中遇到了类似的问题...

【讨论】:

【参考方案3】:

这对我有用:

    运行测试(失败并出现错误)

    点击测试名称旁边的下拉菜单并选择“编辑配置”

    单击“运行/调试配置”左侧面板中的测试名称 对话框。

    单击减号删除测试。点击确定

    现在重新运行测试,它通过了。

我的直觉是,狡猾的测试配置被缓存在.idea/ 下,并且显式删除测试会删除或更新它。

另一种解决方法是手动创建 Django 测试:

    编辑配置

    添加新配置(单击“+”按钮)

    选择“Django 测试”

    在“目标”下,输入测试模块的路径(例如“your_app.your_module.tests”)

    单击“确定”,您应该可以运行此配置。

【讨论】:

以上是关于Django 仅使用 pycharm 测试错误 - 不是终端 |应用尚未加载的主要内容,如果未能解决你的问题,请参考以下文章

在 Pycharm 下记录运行 django 测试的输出

未解决的参考:PyCharm 中的“django”错误

在PyCharm中运行Django测试

pycharm 使用

Pycharm 运行 pytest 参数化测试未显示所有测试,仅显示一个正在运行

PyCharm 开发Django ,错误汇总