App Engine中的处理程序测试失败:webtest导入错误
我对这个错误完全搞不懂:
======================================================================
ERROR: test_webtest (unittest2.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_webtest
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/unittest2/loader.py", line 260, in _find_tests
module = self._get_module_from_name(name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/unittest2/loader.py", line 238, in _get_module_from_name
__import__(name)
File "/Users/chris/Documents/gae/tasker/test/test_webtest.py", line 4, in <module>
import webtest
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/webtest/__init__.py", line 9, in <module>
from webtest.app import TestApp
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/webtest/app.py", line 65, in <module>
class TestRequest(webob.BaseRequest):
AttributeError: 'module' object has no attribute 'BaseRequest'
事情是这样的:
- 我正在为我的App Engine应用设置处理程序的单元测试。
- 我在按照这个教程来搭建单元测试框架,包括页面底部的bash脚本,逐字照抄。
我在终端运行测试,使用的命令是:
./run_tests.py /usr/local/google_appengine test/
我在使用这个教程来构建我的处理程序测试。但是它从来没有通过导入这一关。我只需要在
test/test_webtest.py
里做这个就会出现错误:import webtest
我已经安装了webtest:
$ pip install WebTest Requirement already satisfied (use --upgrade to upgrade): WebTest in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages Requirement already satisfied (use --upgrade to upgrade): six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from WebTest) Requirement already satisfied (use --upgrade to upgrade): WebOb>=1.2 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from WebTest) Requirement already satisfied (use --upgrade to upgrade): waitress in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from WebTest) Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from WebTest) Requirement already satisfied (use --upgrade to upgrade): distribute in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg (from waitress->WebTest)
我一次性运行所有测试,包括那些没有错误的旧测试。但是在任何一个测试中导入
webtest
都会产生上面的错误。为什么会这样呢?
2 个回答
0
我在使用webtest和GAE(谷歌应用引擎),效果很好。为了帮助你,我会尝试找出我这边的设置和你那边的不同之处:
- 我使用的是
unittest
,而不是unittest2
。 - 我没有使用像你那样的
run_tests.py
脚本。我只是直接在命令行中这样调用它:nosetests --with-gae
0
这个问题其实是我不同的Python环境搞混了。
我电脑里的 pip
和 python
路径指向的是 /user/local/bin/python
,而实际上,webtest就是安装在这个地方。
不过,我从教程上复制的代码里有一个这样的开头:#!/usr/bin/python
,所以当我用 ./run_tests.py
来运行它时,它是在一个没有安装webtest的环境下运行的。
要解决这个问题,只需要用 python ./run_tests.py
来运行,或者把开头改成 #!/user/local/bin/python
就可以了。