Erd*_*rds 5 python google-app-engine unit-testing
我正在努力研究如何使用Google App Engine(Python)为TDD设置我的环境.(我也是Python的新手).我的环境如下:
我使用IntelliJ和Python插件,因此运行unittests就像点击ctrl-shft-f10一样简单.
我还阅读了有关testbed的文档,并成功测试了数据存储区和内存缓存.但是,我遇到的问题是如何对RequestHandlers进行单元测试.我已经在Google上扫描了很多文章,其中大多数似乎都是将gaetestbed与gae合并为测试平台.
在下面的代码示例中,我想知道如何编写单元测试(可在intellij中运行),该测试测试对'/'的调用返回 - >主页
from google.appengine.ext import webapp
import wsgiref.handlers
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Home Page')
paths = [
('/', MainHandler)
]
application = webapp.WSGIApplication(paths, debug=True)
def main():
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
根据Nick Johnson在下面的回答,我添加了一个名为test的新文件夹,并在该文件夹中添加了一个名为unit_test.py的文件.对于该文件,我添加了以下代码(修改自Kris的答案如下):
from StringIO import StringIO
from main import MainHandler
import unittest
from google.appengine.ext import webapp
class MyTestCase(unittest.TestCase):
def test_get(self):
request = webapp.Request({
"wsgi.input": StringIO(),
"CONTENT_LENGTH": 0,
"METHOD": "GET",
"PATH_INFO": "/",
})
response = webapp.Response()
handler = MainHandler()
handler.initialize(request, response)
handler.get()
self.assertEqual(response.out.getvalue(), "Home Page")
Run Code Online (Sandbox Code Playgroud)
它现在有效!
我发现我需要对 Nick Johnson 的代码进行稍微修改的版本:
request = webapp.Request({
"wsgi.input": StringIO.StringIO(),
"CONTENT_LENGTH": 0,
"METHOD": "GET",
"PATH_INFO": "/",
})
response = webapp.Response()
handler = MainHandler()
handler.initialize(request, response)
handler.get()
self.assertEqual(response.out.getvalue(), "Home Page")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |