Modul Unittest Python
Modul Unittest Python
Prerequisites
Untuk dapat memahami keseluruhan dari Tutorial di Modul ini, kamu membutuhkan :
• Memahami Function di Python
• Basic Pemrograman Python
Automated Testing vs Manual Testing
Kabar baiknya adalah, kamu mungkin sudah pernah melakukan testing pada
codingan mu tanpa kamu menyadarinya. Ingat ketika kita mengeksekusi kode kita dan
mengujinya untuk pertama kali? Apakah kamu mengecek fitur-fitur nya dan
bereksperimen menggunakan kode program mu? Itu lah yang dinamakan Exploratory
Testing atau bisa juga disebut Manual Testing.
Exploratory testing adalah sebuah bentuk pengetesan yang dikerjakan tanpa
adanya rencana terstruktur. Di Exploratory Test kamu hanya mengeksplor
aplikasi/program yang sudah kamu buat.
Untuk melakukan testing secara komplit dengan metode ini (Manual Testing),
kamu harus mencatat seluruh fitur yang dimiliki oleh aplikasi mu, tipe input yang
berbeda-beda yang bisa diterima (contoh: int, string, float, dsb), dan hasil yang
diharapkan dari program yang kamu buat. Sekarang, setiap kamu membuat perubahan
pada codingan mu, kamu harus melakukan semua test tersebut. Pada setiap item yang
ada pada list dan menceklis nya satu per satu.
Di sinilah Automated Testing berperan. Test ini adalah Pengeksekusian dari Test yang
sudah kamu rencanakan tadi (Bagian-bagian dari aplikasimu yang ingin kamu test,
Urutannya, dan output yang diharapkan) oleh sebuah Script, bukan manusia. Python
sudah menyediakan tools dan libraries yang membantu kita melakukan Automated
Testing pada aplikasi mu.
Unit Tests vs. Integration Tests
Dunia Pengetesan tidak hanya Manual dan Automated testing saja, sekarang
setelah kamu mengetahui perbedaan antara Automated testing dan Manual Testing,
inilah saatnya untuk melangkah lebih dalam.
Pikirkan bagaimana kamu dapat menguji lampu pada mobil. Kamu akan
menyalakan lampu (dikenal sebagai Test step) dan pergi ke luar mobil atau meminta
teman untuk memeriksa apakah lampu menyala (dikenal sebagai Test Assertion).
Testing beberapa komponen dikenal sebagai Integration Testing.
Pikirkan semua hal yang perlu bekerja dengan benar agar tugas sederhana
memberikan hasil yang benar. Komponen-komponen ini seperti bagian dari aplikasi,
semua Class, Function, dan Module yang telah dibuat.
Unittest modul merunning pengetesan kita dan memberi tahu bahwa pengetesan
kita telah berjalan OK. Satu titik ( . ) pada baris pertama output merepresentasikan
pengetesan kita telah lulus.
Catatan: TestCase akan mengenali method-method test yang diawali dengan test.
Contohnya
def test_add_fish_to_aquarium_success(self):
akan dianggap sebagai sebuah pengetesan dan akan dieksekusi.
Sedangkan, def example_test(self), sebaliknya. Tidak akan dikenali sebagai sebuah
pengetesan karena nama method tersebut tidak diawali “test”. Hanya method yang
diawali dengan “test” yang akan di run dan dilaporkan ketika kamu menjalankan
perintah python -m unittest …
Selanjutnya, mari kita bereksperimen supaya test kita failed atau gagal.
Ubah pada baris kode pendeklarasian variable expected.
Tulis pada file test_add_fish_to_aquarium.py
Method Assertion
assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertIsNone(a) a is None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
Sekarang kita telah menulis beberapa basic dari pengetesan, mari kita lihat
bagaimana kita bisa menggunakan tools lain juga yang disediakan oleh TestCase untuk
memanfaatkan kode apapun yang kita test.
Using the setUp Method to Create Resources
TestCase juga mendukung sebuah method yang bernama setUp yang bisa
membantu membuat resources berdasarkan pengetesan. Method setUp bisa sangat
membantu ketika kamu mempunyai sekumpulan kode yang ingin dieksekusi sebelum
setiap bagian dari pengetesan. setUp memudahkanmu menempatkan kumpulan kode
tadi di satu tempat, dibandingkan harus mengulang setiap individual test.
Mari kita lihat pada contoh berikut:
Tulis pada file test_fish_tank.py
Catatan : Jika kita memiliki file test lebih dari satu dengan subclass TestCase yang ingin
kita jalankan, pertimbangkan untuk menggunakan command python -m unittest
discover untuk menjalankan lebih dari satu file pengetesan. Jalankan perintah python -
m unittest discover --help untuk melihat detail penggunaannya.
Using the tearDown Method to Clean Up Resources
TestCase mendukung pasangan dari method setUp yang bernama tearDown. tearDown
berguna jika, misalnya kita perlu membersihkan koneksi yang terhubung dengan
sebuah database, atau modifikasi yang dibuat ke Filesystem setelah setiap pengetesan
selesai. Kita akan mengulas kembali sebuah contoh yang digunakan tearDown dengan
Filesystem:
Tulis pada file test_advanced_fish_tank.py
Method tearDown memungkinkan kita untuk menulis cleanup code yang dijalankan
untuk semua pengetesan yang ada di dalam subclass TestCase.
Conclusion
Di tutorial ini kita telah menulis Class TestCase dengan assertion yang berbeda-beda,
menggunakan method setUp dan tearDown, dan menjalankan pengetesan dari
command line.
Module unittest juga memiliki Class dan Fitur lain yang tidak dibahas di modul ini.
Tetapi sejauh ini kamu telah mendapatkan penggunaan dasar dari unittest. Untuk lebih
lengkapnya kamu bisa membaca dokumentasi unittest module untuk mengulik lebih
dalam tentang Class dan Fitur yang tersedia di sana.