Django Framework with TDD is the key of good python web coding
Sebagai junior developers, belajar merupakan sesuau yang pasti akan ditemui setiap memulai sesuatu yang baru. Dan dalam software development, pembelajaran basic mengenai platform, bahasa pemograman yang akan dipakai dan platform merupakan hal yang akan dilalui secara bertahap. Banyak jalan untuk Belajar terutama di zaman era Internet. Bisa melalui materi tutorial, source code, Library, forums, dan documentation secara online di berbagai pelosok web.
Kali ini saya akan berbagi post mengenai Django dan TDD digunakan guna mencapai target pengembangan software dalam perancanaan agile, dan TDD dalam penggunaan Django framework.
Contoh TDD dalam menampilkan halaman page home.html sebagai berikut:
from django.test import TestCase, Client
from django.urls import resolve
from .views import index, home_content
from django.http import HttpRequest
class HomeUnitTest(TestCase):
def home_url_is_exist(self):
# Check page /home/ can be accessed
response = Client().get('/home/')
self.assertEqual(response.status_code,200)
def test_home_using_index_func(self):
# Check /home diresolve using views.py django
found = resolve('/home/')
self.assertEqual(found.func, index)
def test_home_content_is_written(self):
#Content cannot be null
self.assertIsNotNone(home_content)
def test_home_page_is_completed(self):
# Check whenever /home is loaded correctly
request = HttpRequest()
response = index(request)
html_response = response.content.decode('utf8')
self.assertIn(home_content, html_response)
Testcase tersebut lalu disimpan pada tests.py, yang merupakan basic dari task yang akan kita kerjakan untuk selanjutnya. sesuai dengan Testcase, yang akan kita buat pada django secara berurutan adalah:
- Memberikan template home.html dan menset urls.py agar dapat merespond request yang mengakses /home
- Menset views.py agar request dapat diarahkan menuju template home.html
- membentuk variable “home_content” pada views.py yang berisi content.
- Mengecek integrasi dari ke-tiga pont tersebut menjadi kesatuan functional yang berjalan.
Kenapa harus menulis TDD terlebih dahulu?
Quick Test, karena bila menemui keraguan akan kesesuaian dengan apa yang kita akan selesaikan, cukup panggil:
(env) $ python manage.py test
Make the code Work, dengan pengerjaan secara bertahap, yaitu dengan menyelesaikan satu-persatu testcase, dari 4/4 Fail, manjadi 3/4, lalu 2/4, hingga 0/4 Fail alias OK, merupakan hal yang satisfying dan Cara cepat mengetahui code kita sudah berjalan tanpa harus membuka browser secara manual.
Setelah all Green, Refaktor, yaitu membuat kembali testcase untuk fitur berikutnya. Dan repeat. Itu merupakan cycle of TDD.
Selanjutnya bisa dimulai dengan merencanakan, misalkan,:
- Database, diprogram melalui models.py
- template html, dapat disimpan pada folder templates
- Setting.py, tempat control dari addons yang akan dijalankan, variable, dan konfigurasi project
- Program tambahan dapat disimpan pada utils.py
Deployment code ke tempat repository dapat membentuk aktivitas coding yang flexible dengan power of Git.
Bagaimana untuk memastikan TestCase yang dibuat melingkupi apa yang telah dibuat? Maka dari itu Code Coverage is Exist. Berikut screen shoot Code Coverage hasil commit pada repo gitlab yang telah di setting pada file .gitlab-ci.yml
Coverage dinilai dari testcase yang berjalan pada line program yang dieksekusi, bilamana ada line code yang tidak dijalankan pada testcase, maka nilai Coverage akan berkurang.
Ada banyak hal yang saya belum sempat menulis pada postingan ini. Mohon maaf atas keterbatasan waktu dan kesempatan.
Salam spesial kepada Bu Maya dan Kak Guhkun atas bimbingan dan waktu nya. Terima kasih banyak.
Wassalam.