Подтвердить что ты не робот

Единичное тестирование в торнадо

Я создаю простое веб-приложение в tornado.web, используя mongodb в качестве бэкэнд. 90% серверной кодовой базы находится в наборе RequestHandlers, а 90% объектов данных - json. В результате основной пример использования для обработчиков тестов:

"Given Request Y and DB in state X,
 verify that handler method Z returns json object J"

Как настроить такой тест?

Я нашел несколько сообщений в блогах и темы обсуждения по этой теме, но в основном они сосредоточены на настройке asyncronous. Я ничего не могу найти при настройке правильного типа состояния базы данных или аргументов запроса GET/POST.

4b9b3361

Ответ 1

Я обычно издевался над входами и просто тестировал вывод. Это надуманный пример с использованием этой издевательской библиотеки - 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'}))