Mudahkan UnitTest pada Django menggunakan Data Seeding dengan Django Fixture

Dipta Dwiyantoro
3 min readJun 8, 2021

Unit Test merupakan hal yang sering dilakukan oleh developer untuk menguji kode yang mereka buat. Pada dasarnya untuk melakukan uji coba, kita perlu menyiapkan suatu environment agar kita dapat menguji kode yang kita buat berjalan sesuai dengan kondisi yang sesuai dengan harapan kita.

Untuk menyiapkan sebuah environment untuk test terkadang membutuhkan waktu yang lebih daripada membuat test karena banyak aspek yang perlu kita siapkan terlebih dahulu agar pada saat test dieksekusi, program mengalami kondisi yang diinginkan oleh kita secara sempurna.

Pada aplikasi Django, terkadang fungsi yang kita buat terdapat pengambilan data dari database, hal tersebut menyebabkan kita perlu menyiapkan beberapa data yang sudah siap untuk diambil oleh fungsi tersebut. Kita bisa menangani tersebut menyiapkan data tersebut pada fungsi setUp pada TestSuite yang kita gunakan.

Contoh penyiapan environment test

Pada fungsi setUp tersebut, semua data yang dibutuhkan untuk testing diinisiasi dengan cara membuat beberapa variable dan memasukkan data secara langsung ke dalam basis data. Hal tersebut tentunya tidak akan memiliki masalah jika kita hanya membuat beberapa TestSuite. Apabila kita membuat banyak TestSuite dan menggunakan kebetulan data yang sama, kita perlu menduplikasi kode pada fungsi setUp yang sebelumnya kita buat. Hal tersebut tentunya akan mengakibatkan duplikasi kode tes yang sangat banyak, selain itu apabila kita ingin mengubah data yang kita inisiasi pada tes, kita perlu mengubah beberapa kode pada semua TestSuite. Masalah tersebut bisa kita cegah dengan menggunakan fitur yang disediakan oleh Django yakni Fixture.

Fixture

Fixture merupakan sebuah fitur yang membuat kita bisa menginisiasi data pada basis data Django dengan menggunakan sebuah file JSON atau YAML dengan format yang sudah disediakan oleh Django itu sendiri.

Contoh fixture pada Django

Untuk menggunakan fixture kita perlu mengatur variabel FIXTURE_DIRS pada settings.py dari aplikasi yang kita buat untuk memberitahu Django tempat kita menaruh file fixtures.

Penambahan variabel FIXTURE_DIRS

Setelah kita atur variabel tersebut kita bisa langsung meletakkan fixture yang kita buat pada folder yang sudah kita tentukan.

Folder yang berisi fixture

Cara Menggunakan Fixture

Untuk menggunakan fixture pada TestSuite, kita hanya perlu menambahkan class variable fixtures yang nilainya merupakan sebuah list yang berisi nama file fixture yang akan digunakan pada TestSuite dan tersedia pada folder fixture.

TestSuite yang menggunakan fixture

Terlihat pada contoh TestSuite yang menggunakan fixture, kode lebih singkat yang awalnya 90 baris menjadi 35 baris saja, selain itu fixture bisa digunakan kembali pada TestSuite manapun. Kita bisa mengambil data pada fixture dengan cara mengquery data pada basis data berdasarkan data yang ada pada fixture, contohnya pada TestSuite di atas, saya mengambil data User berdasarkan namanya.

--

--