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_calls
atau 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.