我对谷歌应用引擎和python相当新,所以请耐心等待。 我正在尝试第一次对gae进行python单元测试,同时遵循Webapp2指南
但是当我运行测试时,我不断收到以下错误:
Traceback (most recent call last):
File "test.py", line 2, in <module>
import webapp2
ImportError: No module named webapp2
这是我的test.py文件:
import unittest
import webapp2
# from the app main.py
import main
class TestHandlers(unittest.TestCase):
def test_hello(self):
# Build a request object passing the URI path to be tested.
# You can also pass headers, query arguments etc.
request = webapp2.Request.blank('/')
# Get a response for that request.
response = request.get_response(main.app)
# Let's check if the response is correct.
self.assertEqual(response.status_int, 200)
self.assertEqual(response.body, 'Hello, world!')
if __name__ == '__main__':
unittest.main()
这是我的main.py文件:
import webapp2
class HelloHandler(webapp2.RequestHandler):
def get(self):
self.response.write('Hello, world!')
app = webapp2.WSGIApplication([('/', HelloHandler)])
def main():
app.run()
if __name__ == '__main__':
main()
这是我的app.yaml文件:
application: test-app
version: 1
runtime: python27
api_version: 1
threadsafe: true
- url: /.*
script: main.app
libraries:
- name: jinja2
version: latest
builtins:
- remote_api: on
我当前的文件夹结构是:
Test-app
app.yaml
main.py
test.py
index.yaml
要运行我正在进行的测试:
$ cd test-app
$ python test.py
任何人都可以指出我的写作方向,为什么我收到上面的错误信息,为什么我不能运行这个简单的测试。
我试图发布尽可能多的信息,希望足够,有人给我一点帮助。
感谢。
答案 0 :(得分:2)
webapp2包含在google提供的运行时中,但您需要使用app.yaml中的libraries指令配置它的支持
请参阅直接支持的第三方库https://developers.google.com/appengine/docs/python/tools/libraries27
上的文档在你的情况下,你会包括
libraries:
- name: webapp2
version: "latest"
在您的app.yaml中,然后您可以部署代码,而无需在代码库中包含webapp2。
对于未在第三方库文档中列出的库或未列出的版本,另一个答案是正确的。
答案 1 :(得分:1)
感谢Tim Hoffman和cdonts的回复他们肯定让我想到了这一点,Tim Hoffman你几乎是对的。
我的意思是webapp2已经作为google app引擎中的库包含在内(google_appengine / lib / webapp2-2.5.2)。所以我无法运行我的测试的原因是因为我没有将google_appengine / lib添加到$ PYTHONPATH,这就是“导入webapp2”未按预期工作的原因。
因此,由于我正在使用virtualenv,我所做的只是通过运行以下命令将google_appengine / lib(目录)添加到我的virtualenv的$ PYTHONPATH:
# add2virtualenv ---> adds/this/directory/to/the/PYTHONPATH
$ add2virtualenv google_appengine/lib/webapp2-2.5.2
# check which directories have been added to the virtualenv
$ add2virtualenv
Usage: add2virtualenv dir [dir ...]
Existing paths:
google_appengine/lib/webapp2-2.5.2
测试现在正在运行并按预期工作,谢谢你们。
答案 2 :(得分:-1)
Google App Engine支持某些Web框架:Django,web.py,webapp2和其他,但它不包含它们。您需要将他们的源代码(或您的webbapp2源代码)与您的应用程序一起放置。
您可以从here下载webapp2框架。
现在你将拥有:
Test-app
app.yaml
main.py
test.py
index.yaml
webapp2/
进行部署,您已做好准备!
希望它有所帮助。