Mock Object Testing in Python

Refo Ilmiya
AdHub Team
Published in
1 min readApr 29, 2019

Seringkali, software yang kita buat berinteraksi dengan services yang kita sebut “kotor”. Seperti yang dikatakan layman:

“Services that are crucial to our application, but whose interactions have intended but undesired side-effects”

yang artinya, context yang tidak diinginkan dari suatu test run.

Sebagai contoh, misalkan kita inign membuat suatu social app dan ingin mengetes fitur baru ‘Post to facebook’, namun kita tidak ingin untuk melakukan posting ke facebook setiap kali kita menjalankan test suite kita. Kasus ini dapat di-handle dengan menggunakan mock.

Library Pythonunittest memiliki suatu sub-package yang bernama unittest.mock—atau kalau kita sebut sebagai dependensi, yaitu mock—yang memberikan kegunaan yang sangat banyak untuk melakukan mock dan stub efek samping atau kelemahan tersebut.

Implementasi di Adhub

Saat ini, mock testing yang sudah masuk staging baru testing pada google api. Namun yang Saya implementasikan disini adalah mocking pada pembuatan iklan.

Kasusnya sebagai berikut, Saya ingin melakukan testing apakah fungsi create facebook campaign benar terpanggil. Namun, saya tidak ingin setiap pemanggilan fungsi di unittest campaign baru terbuat di facebook. Oleh karena itu, Saya mengimplementasikan mock testing disini.

Terlihat pada mock tersebut, ketika kita ingin memanggil fungsi facebook campaign yang dipanggil adalah fungsi fake_campaign_response.

--

--