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 6 dari 15

unittest

setUp, test yang berdiri sendiri, dan subTest

Setelah pelajaran ini kamu bisa menyiapkan objek baru untuk setiap test dengan setUp, menjaga test tidak saling bergantung, dan memeriksa banyak kasus sejenis dengan subTest.

±13 menitDiperiksa 3 Okt 2026

Materi

Test yang memeriksa sebuah objek — keranjang belanja, daftar antrean, buku kas — membutuhkan objek baru di setiap test. Metode setUp() dijalankan unittest sebelum setiap metode test, dan tearDown() sesudahnya. Objek yang dibuat di setUp lalu disimpan di self hanya dipakai test yang sedang berjalan; test berikutnya mendapat objek baru lagi. Dokumentasi unittest menyebut susunan ini fixture: keadaan awal yang disiapkan untuk test.

import unittest


class Antrean:
    def __init__(self):
        self.isi = []

    def daftar(self, nama):
        self.isi.append(nama)
        return len(self.isi)


class UjiAntrean(unittest.TestCase):
    def setUp(self):
        self.antrean = Antrean()

    def test_nomor_pertama(self):
        self.assertEqual(self.antrean.daftar("Rina"), 1)

    def test_nomor_kedua(self):
        self.antrean.daftar("Rina")
        self.assertEqual(self.antrean.daftar("Joko"), 2)

Setiap test berdiri sendiri. unittest menjalankan metode test berurutan sesuai abjad namanya, bukan urutan penulisannya. Test yang hanya lulus bila test lain berjalan lebih dulu akan rusak saat namanya diganti, saat test baru ditambahkan, atau saat dijalankan sendirian. setUp adalah tempat menyiapkan keadaan awal yang sama untuk semuanya.

Untuk banyak kasus berbentuk sama, self.subTest(...) dipakai di dalam perulangan. Tanpa subTest, assert pertama yang gagal menghentikan metode itu dan kasus sisanya tidak pernah diperiksa. Dengan subTest, setiap kasus yang gagal dilaporkan sendiri lengkap dengan parameternya, dan perulangan berjalan sampai habis.

    def test_nomor_meja(self):
        for teks, harap in [("M01", True), ("M1", False), ("X01", False)]:
            with self.subTest(teks=teks):
                self.assertEqual(nomor_meja_sah(teks), harap)

Latihan

0/3 lulus

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

Latihan 3 dari 3

Sebuah kelas uji punya metode setUp dan empat metode yang namanya diawali test. Berapa kali setUp dijalankan saat kelas itu diuji?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke