Как я могу сделать пробный юнит-тест http.server do_GET?
Я новичок в модульном тестировании. Я хотел бы знать, как я могу сделать пробный юнит-тест следующих функций.
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 ответ
Я работаю над аналогичной задачей. Вот частичное решение, которое я придумала до сих пор
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(), "/")