Я написал собственный класс HTTP Handler
для обработки GET
запросов, отправленных на локальный сервер. Я хотел бы проверить внутреннее функционирование метода do_GET
. Пока вот что я придумал. Это только проверяет, вызван ли метод do_GET
, ничего более.
Class TestHandler(unittest.Testcase):
def setUp(self):
self.mock_request = Mock()
@patch('http.server.HTTPServer')
@patch('my_module.Handler.do_GET')
def test_do_get(self, mock_do_get, mock_http_server):
"""Test if do_GET method gets called"""
mock_do_get.return_value = "/"
self.mock_request.makefile.return_value = IO(b"GET /")
server = Handler(self.mock_request, ('127.0.0.1', 8080), mock_http_server)
self.assertTrue(mock_do_get.called)
self.assertEqual(server.do_GET(), "/")
Обновленная версия
Теперь я точно знаю, что метод get do_GET
вызывается при отправке запроса GET
, но у меня нет возможности проверить http-ответ.
@patch('http.server.HTTPServer')
def test_do_get_monkey(self, mock_http_server):
self.mock_request.makefile.return_value = IO(b"GET /test")
handler = HttpHandler(self.mock_request, ('127.0.0.1', 8080), mock_http_server)
handler.do_GET = MagicMock(return_value="/")
handler.do_GET()
handler.do_GET.assert_called_with()