簡體   English   中英

如何在谷歌應用引擎中運行python單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM