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.