[英]How to run python unit tests in google app engine
我對谷歌應用程序引擎和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
任何人都可以指出我的寫入方向,為什么我得到上面的錯誤信息,為什么我不能運行這個簡單的測試。
我試圖發布盡可能多的信息,希望足夠了,有人給我一點幫助。
謝謝。
webapp2包含在谷歌提供的運行時中,但您需要通過在app.yaml中使用libraries指令來配置它的支持
請參閱直接支持的第三方庫的文檔https://developers.google.com/appengine/docs/python/tools/libraries27
在你的情況下,你會包括
libraries:
- name: webapp2
version: "latest"
在您的app.yaml中,然后您可以部署代碼,而無需在代碼庫中包含webapp2。
對於未在第三方庫文檔中列出的庫或未列出的版本,另一個答案是正確的。
感謝Tim Hoffman和cdonts的回復他們肯定讓我想到了這一點,而Tim Hoffman你幾乎是對的。
我的意思是webapp2已作為庫包含在谷歌應用引擎中(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
測試現在正在運行並按預期工作,謝謝你們兩位。
Google App Engine支持某些Web框架:Django,web.py,webapp2和其他,但它不包含它們。 您需要將他們的源代碼(或您的webbapp2源代碼)與您的應用程序一起放置。
您可以從此處下載webapp2框架。
所以現在你將擁有:
Test-app
app.yaml
main.py
test.py
index.yaml
webapp2/
進行部署,你就准備好了!
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.