testy jednostkowe w tornado

Buduję prostą aplikację internetową w tornado.web wykorzystujący MongoDB jako backend. 90% bazy kodu po stronie serwera żyje w zestawie Requesthandlerów, a 90% obiektów danych to json. W związku z tym podstawowym przypadkiem użycia programów do testowania jest:

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

Jak skonfigurować taki test?

Znalazłem kilka postów na blogu i wątków dyskusyjnych na ten temat, ale skupiają się głównie na konfiguracji asynchronicznej. Nie mogę znaleźć nic na ustawienie odpowiedniego stanu DB lub argumenty żądania GET / POST.

Author: Abe, 2012-06-01

1 answers

Zazwyczaj wyśmiewałbym wejścia i po prostu przetestowałbym wyjście. Jest to wymyślony przykład z użyciem tej szyderczej biblioteki - http://www.voidspace.org.uk/python/mock/. będziesz musiał wyśmiewać poprawną funkcję kwerendy mongodb. Nie wiem, czego używasz.

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'}))
 13
Author: aychedee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-21 14:30:05