Pelajaran 12 dari 12
12. Debugging dan Testing Dasar
Debugging dan testing adalah keterampilan penting untuk memastikan kode berjalan dengan benar.
Debugging dengan pdb
# Python Debugger (pdb)
import pdb
def hitung_rata_rata(angka):
pdb.set_trace() # Breakpoint
total = sum(angka)
return total / len(angka)
data = [1, 2, 3, '4', 5]
print(hitung_rata_rata(data))
Unit Testing dengan unittest
# Contoh unit test sederhana
import unittest
def tambah(a, b):
return a + b
class TestTambah(unittest.TestCase):
def test_tambah_positif(self):
self.assertEqual(tambah(2, 3), 5)
def test_tambah_negatif(self):
self.assertEqual(tambah(-1, -1), -2)
def test_tambah_campuran(self):
self.assertEqual(tambah(5, -3), 2)
if __name__ == '__main__':
unittest.main()
Assert Statement
# Assert untuk pengecekan sederhana
def bagi(a, b):
assert b != 0, "Pembagi tidak boleh nol"
return a / b
print(bagi(10, 2)) # Output: 5.0
print(bagi(10, 0)) # Akan raise AssertionError
Latihan:
Buat fungsi yang menghitung faktorial dan tulis unit test untuk menguji beberapa kasus (angka positif, nol, dan input invalid).
# Solusi contoh
import unittest
def faktorial(n):
if not isinstance(n, int) or n < 0:
raise ValueError("Input harus bilangan bulat positif")
if n == 0:
return 1
return n * faktorial(n-1)
class TestFaktorial(unittest.TestCase):
def test_faktorial_positif(self):
self.assertEqual(faktorial(5), 120)
def test_faktorial_nol(self):
self.assertEqual(faktorial(0), 1)
def test_faktorial_invalid(self):
with self.assertRaises(ValueError):
faktorial(-1)
with self.assertRaises(ValueError):
faktorial(3.5)
if __name__ == '__main__':
unittest.main()