Как я могу сделать пробный юнит-тест http.server do_GET? - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в юнит-тестировании. Я хотел бы знать, как я могу выполнить фиктивный юнит-тест следующих функций.

import ...

class A(BaseHTTPRequestHandler):

   def do_GET(self):
      client_ip = self.client_address[0]
      if client_id == '10.10.10.10':
         self._set_headers_200()
         return
      else:
        self._set_headers_400()
        return

Тестовый класс:

import unittest

def test_A_get():

   I want to test both 200 and 400 response

Кто-нибудь может мне помочь с этой проблемой?

1 Ответ

0 голосов
/ 06 сентября 2018

Я работаю над аналогичной задачей. Вот частичное решение, которое я придумала до сих пор

class TestA(unittest.TestCase):

    def setUp(self):
        self.mock_request = Mock()

    @patch('http.server.HTTPServer')
    @patch('my_module.A.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 = A(self.mock_request, ('127.0.0.1', 8080), mock_http_server)
        self.assertTrue(mock_do_get.called)
        self.assertEqual(server.do_GET(), "/")
...