perbarui objek tiruan dengan python

Aug 20 2020

Saya memiliki objek tiruan yang dibuat sebagai berikut:

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

Bagaimana itu bisa diperbarui melalui fungsi lain

Jawaban

2 MrBeanBremen Aug 19 2020 at 23:16

Jika Anda ingin menyimpan objek yang ditambal, Anda harus memulai dan menghentikan penambalan secara manual. Jika Anda menggunakan manajer konteks (misalnya with patch), penambalan akan dikembalikan saat keluar dari ruang lingkup.
Inilah yang dapat Anda lakukan:

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.')

Perhatikan bahwa saya tidak memeriksa pengujian yang sebenarnya - ini tergantung pada logika aplikasi Anda.

Anda juga dapat melakukan penambalan langsung dalam pengujian:

    @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.')