将pytest与Google AppEngine一起使用

时间:2014-12-02 22:45:33

标签: python google-app-engine pytest

我的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?

2 个答案:

答案 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就会自动添加到你的路径中。