繁体   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