Abe*_*Abe 12 python unit-testing tornado
我正在使用mongodb作为后端在tornado.web中构建一个简单的Web应用程序.90%的服务器端代码库都存在于一组RequestHandler中,90%的数据对象都是json.因此,测试处理程序的基本用例是:
"Given Request Y and DB in state X,
verify that handler method Z returns json object J"
Run Code Online (Sandbox Code Playgroud)
我该如何设置这种测试?
我在这个主题上找到了一些博客文章和讨论主题,但他们主要关注的是设置asyncronous.我找不到任何关于设置正确类型的DB状态或GET/POST请求参数的信息.
ayc*_*dee 13
我通常会模拟输入并测试输出.这是一个使用这个模拟库的例子 - http://www.voidspace.org.uk/python/mock/.你必须模拟出正确的mongodb查询功能.我不确定你在用什么.
from mock import Mock, patch
import json
@patch('my_tornado_server.mongo_db_connection.query')
def test_a_random_handler_returns_some_json(self, mock_mongo_query):
request = Mock()
# Set any other attributes on the request that you need
mock_mongo_query.return_value = ['pink', 'orange', 'purple']
application = Mock()
handler = RandomHandler(application, request)
handler.write = Mock()
handler.get('some_arg')
self.assertEqual(handler.write.call_args_list, json.dumps({'some': 'data'}))
Run Code Online (Sandbox Code Playgroud)