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.
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'}))
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