在python中更新模拟对象

2024-10-03 04:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个模拟对象,如下所示:

    with patch('requests.get') as request:
      self.request = request
      self.request.session = MockSession()
      self.request.cookies = {}

如何通过其他功能进行更新


Tags: 对象self功能getrequestsessionaswith
1条回答
网友
1楼 · 发布于 2024-10-03 04:38:38

如果要保存已修补的对象,必须手动启动和停止修补。如果使用上下文管理器(例如with patch),则在退出作用域时将恢复修补。
以下是您可以做的:

class TestSomething(unittest.TestCase):
    def setUp(self):
      self.patcher = patch('requests.get')  # returns the patcher object
      self.request = self.patcher.start()  # returns the patched object
      self.request.session = MockSession()
      self.request.cookies = {}

    def tearDown(self):
        sef.patcher.stop()

    def test_03_set_nonce(self):
        self.web_session.set_nonce(self.request)
        self.assertTrue(len(self.request.cookies) > 0, 'set_nonce failed.')

请注意,我没有检查实际的测试-这取决于您的应用程序逻辑

您也可以在测试中直接进行修补:

    @patch('requests.get')
    def test_03_set_nonce(self, request):
        request.session = MockSession()
        request.cookies = {}
        self.web_session.set_nonce(request)
        self.assertTrue(len(request.cookies) > 0, 'set_nonce failed.')

相关问题 更多 >