Belajar Python Dasar

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()
Sebelumnya Selesai