Unit Test Python dengan unittest + Contoh Lengkap

Pelajari unit test Python dengan modul unittest: assertEqual, assertRaises, nilai batas, dan cara menjalankan tes, lengkap dengan contoh dan versi pytest.

Mapel
Pemrograman
Jenjang
Kuliah
Waktu baca
4 menit
Terbit
8 Oktober 2026

Unit test Python adalah kode kecil yang memeriksa apakah satu bagian program, biasanya satu fungsi, menghasilkan keluaran yang benar. Python menyediakan modul bawaan unittest dengan method seperti assertEqual dan assertRaises. Tes dijalankan otomatis setiap kali kode berubah, sehingga kesalahan lama tidak muncul kembali tanpa ketahuan.

Apa Itu Unit Test?

Setiap fungsi punya kontrak: masukan apa yang diterima, keluaran apa yang dijanjikan, dan apa yang terjadi pada masukan tidak sah. Unit test mengubah kontrak itu menjadi pemeriksaan yang bisa diulang dalam hitungan detik.

Manfaat utamanya adalah mencegah regresi, yaitu fitur yang tadinya benar menjadi rusak setelah ada perubahan. Pola yang umum dipakai adalah Arrange–Act–Assert: siapkan data, jalankan fungsi, lalu periksa hasilnya.

Cara Membuat Unit Test Python dengan unittest

Sebagai contoh, fungsi biaya_kirim punya aturan: berat sampai 2 kg ongkirnya 8000, di atas 2 kg ongkirnya 12000, dan berat nol atau negatif ditolak.

Contoh 1: Menguji fungsi ongkir

Simpan kode berikut sebagai test_ongkir.py:

import unittest

def biaya_kirim(berat):
    if berat <= 0:
        raise ValueError("berat harus positif")
    return 8000 if berat <= 2 else 12000

class UjiOngkir(unittest.TestCase):
    def test_batas_dua_kilo(self):
        self.assertEqual(biaya_kirim(2), 8000)

    def test_di_atas_batas(self):
        self.assertEqual(biaya_kirim(3), 12000)

    def test_berat_nol(self):
        with self.assertRaises(ValueError):
            biaya_kirim(0)

Jalankan dengan python -m unittest -v test_ongkir.py. Keluarannya kurang lebih:

test_batas_dua_kilo (test_ongkir.UjiOngkir.test_batas_dua_kilo) ... ok
test_berat_nol (test_ongkir.UjiOngkir.test_berat_nol) ... ok
test_di_atas_batas (test_ongkir.UjiOngkir.test_di_atas_batas) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

Tes dijalankan menurut urutan abjad nama method, jadi setiap tes harus bisa berdiri sendiri. Waktu eksekusinya bisa berbeda di setiap komputer.

Method assert yang Sering Dipakai

Method Memeriksa bahwa
assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) / assertFalse(x) x bernilai benar / salah
assertIn(a, b) a ada di dalam b
assertRaises(Error) kode di dalam blok menimbulkan Error
assertAlmostEqual(a, b) a dan b hampir sama (untuk float)

Contoh 2: Membandingkan bilangan desimal

Di Python, 0.1 + 0.2 menghasilkan 0.30000000000000004 karena cara komputer menyimpan bilangan desimal. Jadi assertEqual(0.1 + 0.2, 0.3) gagal, sedangkan assertAlmostEqual(0.1 + 0.2, 0.3) lulus karena membandingkan sampai 7 angka di belakang koma.

Memilih Kasus Uji: Nilai Batas dan Partisi

Tes yang baik tidak asal memilih angka. Bagi masukan menjadi partisi yang perilakunya sama, lalu uji nilai di batas antarpartisi.

Partisi Perilaku Nilai uji
berat ≤ 0 ValueError -1, 0
0 < berat ≤ 2 8000 0.5, 2
berat > 2 12000 2.1, 3

Nilai tepat di batas, seperti 2 dan 0, paling sering menangkap kesalahan operator < versus <=.

Contoh: Menangkap Bug dengan Tes

Contoh 3: Operator batas berubah

Andaikan seseorang mengganti berat <= 2 menjadi berat < 2. Tes berat 3 tetap lulus, tetapi tes batas gagal:

FAIL: test_batas_dua_kilo (test_ongkir.UjiOngkir.test_batas_dua_kilo)
AssertionError: 12000 != 8000

Pesan itu langsung menunjukkan nilai aktual (12000) dan nilai harapan (8000) untuk berat tepat 2 kg. Tes yang hanya memakai berat 1 atau 3 tidak akan pernah menemukan bug ini.

Failure dan Error

  • Failure (FAIL): tes berjalan, tetapi hasil tidak sesuai harapan. Biasanya ada kesalahan logika.
  • Error (ERROR): muncul exception yang tidak diharapkan, misalnya NameError karena salah ketik. Biasanya kode tes atau kode program tidak bisa dijalankan.

Versi Singkat dengan pytest

Banyak proyek memakai pytest, pustaka pihak ketiga yang dipasang dengan pip install pytest. Tesnya cukup berupa fungsi biasa dengan assert:

def test_batas_dua_kilo():
    assert biaya_kirim(2) == 8000

Jalankan dengan perintah pytest. pytest juga dapat menjalankan tes yang ditulis dengan unittest.

Kesalahan yang Sering Terjadi

Ringkasan

  • Unit test memeriksa satu bagian kecil program secara otomatis dan berulang.
  • Di unittest, kelas tes mewarisi TestCase dan nama method diawali test.
  • Pilih kasus uji dari partisi dan nilai batas.
  • Simpan setiap bug yang pernah ditemukan sebagai tes regresi.

Materi Terkait

Unit test paling mudah diterapkan pada fungsi Python yang menerima parameter dan mengembalikan nilai. Gunakan juga untuk memeriksa invarian pada class dan object Python, serta untuk memastikan versi kode yang lebih cepat di materi notasi Big O tetap memberi hasil yang sama.

python · 28 baris
import unittest


def biaya_kirim(berat):
    if berat <= 0:
        raise ValueError("berat harus positif")
    return 8000 if berat <= 2 else 12000


class UjiOngkir(unittest.TestCase):
    def test_batas_dua_kilo(self):
        self.assertEqual(biaya_kirim(2), 8000)

    def test_sedikit_di_atas_batas(self):
        self.assertEqual(biaya_kirim(2.1), 12000)

    def test_berat_negatif_dan_nol(self):
        for berat in (-1, 0):
            with self.subTest(berat=berat):
                with self.assertRaises(ValueError):
                    biaya_kirim(berat)

    def test_penjumlahan_desimal(self):
        self.assertAlmostEqual(0.1 + 0.2, 0.3)


if __name__ == "__main__":
    unittest.main()
File tes lengkap yang bisa dijalankan langsung dengan python

Sumber belajar

Penjelasan dan contoh disusun ulang untuk materi ini; sumber dapat dibuka untuk belajar lebih lanjut.

Latihan soal Unit Test Python

Lembar kerja · jawab langsung di halaman ini

Soal
5

Memuat soal…