1

我是单元测试的初学者。我想知道如何对以下功能进行模拟单元测试。

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

有人可以帮我解决这个问题吗?

4

1 回答 1

0

我正在从事类似的任务。这是我到目前为止提出的部分解决方案

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(), "/")
于 2018-09-06T14:32:24.417 回答