Fakultas Ilmu Komputer UI

Skip to content
Snippets Groups Projects

Raden Fikri Ihza Dwi Nanda - 1606833476 - Computer Science 2016 - PMPL A - Practice Repo

Heroku App: https://radenhomepage.herokuapp.com/

Cerita Exercise 3

Berikut ini merupakan sedikit penjelasan dari apa yang sudah dilakukan pada Exercise 3. Fokus utama pada Exercise 3 adalah bagaimana mengoptimalkan flow Test dari aplikasi yang dibuat. Untuk penjelasan lebih lanjut, akan dijelaskan di bawah.

Test Isolation

Kita perlu melakukan suatu proses yang dapat menghindari pembuatan testing data pada database, dan mengganggu hasil dari Test ketika menjalankan Functional Test. Salah satu caranya adalah dengan membuat proses yang kurang lebih mirip dengan Unit Test yang kita jalankan dari Django. Di mana, Django test runner secara otomatis membuat semacam database yang terpisah dari database sebenarnya, untuk kemudian dapat di-reset untuk setiap penjalanan test, dan dibuang di akhir proses.

Perbedaan design Test sebelum dan sesudah Test Isolation

Pada design Test sebelum dilakukan Test Isolation, file functional_tests.py terletak di bagian root dari repository. Kemudian, untuk menjalankannya, kita belum menggunakan bantuan dari Django, melainkan masih menggunakan:

python3 functional_tests.py

Hal ini ingin kita hindari, karena kita ingin menggunakan bantuan dari Django test runner. Oleh karena itu, kita dapat menyiasatinya dengan cara membuat folder yang berisikan tests.py dan init.py (untuk dapat dikenali oleh Django). Sehingga directory kita sekarang menjadi seperti ini:

├── functional_tests │ ├── init.py │ └── tests.py └── [...]

Salah satu package yang dapat membantu jalannya Functional Test menggunakan Django adalah LiveServerTestCase. LiveServerTestCase ini akan membantu Django test runner mencari semua files yang namanya diawali tests. Sehingga, file tests.py yang baru saja kita buat di folder functional_tests dapat dijalankan. Dengan design Test yang seperti ini, kita dapat menjalankan Test dengan command sebagai berikut:

python3 manage.py test

Dengan command di atas, Django secara otomatis akan menjalankan Unit Test dan Functional Test. Kemudian, permasalahan database juga akan teratasi, karena sudah menggunakan bantuan dari database sementara yang dibuat oleh Django ketika menjalankan Test.