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 测试错误 - 不是终端 |应用尚未加载的主要内容,如果未能解决你的问题,请参考以下文章