我的GAE应用在本地主机上正常运行(使用dev_appserver.py app
),部署后(appcfg.py name update app/
)
但是,当我在测试代码上运行py.test时(在我的应用程序的目录中),我收到导入错误:
app/main.py:4: in <module>
from google.appengine.ext import db
E ImportError: No module named google.appengine.ext
GAE安装在这里:
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
它包含google/appengine/ext/
我已将google-cloud-sdk添加到我的$ PATH,并且/usr/local/
中有一个符号链接到GAE:
lrwxr-xr-x 1 root admin google_appengine -> /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine
如何让py.test找到google.appengine.ext?
答案 0 :(得分:0)
像
这样的东西sys.path.insert(0, '/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/')
您的测试中的可能有效,但最好使用nose-gae扩展名的测试。
答案 1 :(得分:0)
您会看到错误,因为Google App Engine SDK不在您的Python路径中。
你可以在测试脚本或包的开头手动干扰sys.path
,使用nose-gae扩展名,或者使用类似(无耻插件 - 我写的)testable_appengine来自动设置使用谷歌的SDK和其他一些好东西(比如鼻子,没有鼻子插件)的虚拟玩具。它无缝地工作,因为一旦你激活virtualenv,SDK就会自动添加到你的路径中。