Модульный тест на Custom HttpHandler - PullRequest
0 голосов
/ 06 сентября 2018

Я написал собственный класс 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()
...