1

I am beginner in Unit test. I would like to know how can I do mock unit test of following functions.

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

Test Class:

import unittest

def test_A_get():

   I want to test both 200 and 400 response

Can anybody help me this problem?

Iqbal
  • 235
  • 8
  • 20

1 Answers1

0

I'm working on a similar task. Here is a partial solution I've came up with so far

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(), "/")
Hippolyte Fayol
  • 526
  • 1
  • 5
  • 14