Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pengujian Perangkat Lunak

Pelajaran 4 dari 15

unittest

unittest: TestCase dan assertEqual

Setelah pelajaran ini kamu bisa menyusun test dalam kelas turunan unittest.TestCase, memakai assertEqual dan kawan-kawannya, dan membaca tanda ., F, dan E di laporan.

±13 menitDiperiksa 3 Okt 2026

Materi

Modul unittest adalah kerangka test bawaan Python. Test dikelompokkan di dalam kelas turunan unittest.TestCase, dan setiap metode yang namanya diawali test dijalankan sebagai satu test. Pemeriksaannya memakai metode milik kelas itu — assertEqual, assertTrue, assertFalse, assertIn, assertIsNone — bukan pernyataan assert biasa. Dokumentasi unittest menyebut alasannya: dengan metode itu pelaksana test bisa mengumpulkan semua hasil lalu menyusun laporan, dan pesan kegagalannya langsung memperlihatkan kedua nilai yang dibandingkan.

import unittest


def inisial(nama):
    return "".join(kata[0].upper() for kata in nama.split(" "))


class UjiInisial(unittest.TestCase):
    def test_dua_kata(self):
        self.assertEqual(inisial("dewi sartika"), "DS")

    def test_satu_kata(self):
        self.assertEqual(inisial("Kartini"), "K")

    def test_spasi_ganda(self):
        self.assertEqual(inisial("ki  hajar"), "KH")


if __name__ == "__main__":
    unittest.main()
..E
======================================================================
ERROR: test_spasi_ganda (__main__.UjiInisial.test_spasi_ganda)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "uji_inisial.py", line 16, in test_spasi_ganda
  File "uji_inisial.py", line 5, in inisial
IndexError: string index out of range
----------------------------------------------------------------------
Ran 3 tests in 0.001s

FAILED (errors=1)

Setiap test meninggalkan satu tanda di baris pertama laporan: titik untuk lulus, F untuk gagal, E untuk galat. Bedanya penting. F berarti metode assert menemukan hasil yang berbeda dari harapan — fungsinya salah, atau harapannya salah. E berarti test berhenti karena exception lain sebelum sempat membandingkan apa pun. Pada contoh di atas, split(" ") memecah dua spasi menjadi potongan kosong, dan potongan kosong tidak punya huruf pertama, sehingga muncul IndexError. Perbaikannya split() tanpa argumen.

Di laptop, berkas test dijalankan dengan python -m unittest nama_berkas, atau dengan unittest.main() di bagian bawah berkas seperti contoh. Di latihan kelas ini, pemeriksa yang menjalankan kelasmu, jadi unittest.main() tidak perlu ditulis. Nama metode menjelaskan perilaku yang diperiksa, karena nama itulah yang muncul di laporan saat test gagal.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Laporan unittest menandai satu test dengan E, bukan F. Apa artinya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke