Kami telah menggunakan Mock untuk python untuk sementara waktu.
Sekarang, kita memiliki situasi di mana kita ingin mengejek suatu fungsi
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Biasanya, cara untuk mengejek ini adalah (dengan asumsi foo menjadi bagian dari objek)
self.foo = MagicMock(return_value="mocked!")
Bahkan, jika saya memanggil foo () beberapa kali saya dapat menggunakan
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Sekarang, saya menghadapi situasi di mana saya ingin mengembalikan nilai tetap ketika parameter input memiliki nilai tertentu. Jadi jika katakan "my_param" sama dengan "sesuatu" maka saya ingin mengembalikan "my_cool_mock"
Ini sepertinya tersedia di mockito untuk python
when(dummy).foo("something").thenReturn("my_cool_mock")
Saya telah mencari cara untuk mencapai hal yang sama dengan Mock tanpa keberhasilan?
Ada ide?
monkeypatch. Monkeypatch lebih untuk "mengganti fungsi ini demi pengujian," sedangkan Mock adalah apa yang Anda gunakan ketika Anda juga ingin memeriksa mock_callsatau membuat pernyataan tentang apa yang dipanggil dengan dan sebagainya. Ada tempat untuk keduanya, dan saya sering menggunakan keduanya pada waktu yang berbeda dalam file tes yang diberikan.