อัปเดตวัตถุจำลองใน python

Aug 20 2020

ฉันมีวัตถุจำลองที่สร้างขึ้นดังนี้:

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

จะอัปเดตผ่านฟังก์ชันอื่นได้อย่างไร

คำตอบ

2 MrBeanBremen Aug 19 2020 at 23:16

หากคุณต้องการบันทึกวัตถุที่ถูกแพตช์คุณต้องเริ่มและหยุดการแก้ไขด้วยตนเอง หากคุณใช้ตัวจัดการบริบท (เช่น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.')