Materi
Test adalah potongan kode yang memanggil kode lain dengan masukan tertentu, lalu membandingkan hasilnya dengan hasil harapan yang sudah ditulis sebelumnya. Bila keduanya sama, test lulus dan tidak ada yang perlu dilakukan. Bila berbeda, test gagal dan menunjuk fungsi serta masukan yang hasilnya menyimpang. Kelas Membaca Pesan Error & Debugging mengajarkan cara mencari penyebab galat yang sudah muncul; kelas ini mengajarkan cara menuliskan perilaku yang benar sebagai kode, supaya penyimpangan tertangkap sendiri setiap kali program diubah, sebelum ada pengguna yang melapor.
Alat paling sederhana di Python adalah pernyataan assert, bentuknya assert ekspresi, pesan. Bila ekspresinya bernilai benar, tidak terjadi apa-apa. Bila salah, Python melempar AssertionError yang membawa pesan tadi. Dokumentasi Python menjelaskan pernyataan ini sebagai pemeriksaan if not ekspresi: raise AssertionError(pesan) yang hanya berjalan selama mode debug menyala.
def luas_ruang(panjang, lebar):
return panjang * lebar
assert luas_ruang(4, 5) == 20, "ruang 4 x 5 meter"
assert luas_ruang(3, 0) == 0, "lebar nol"
print("semua assert lulus")
Satu test punya tiga bagian: masukan yang dipilih, pemanggilan fungsinya, dan hasil harapan. Hasil harapan dihitung sendiri dari aturannya — dari kalimat "potongan 10 persen untuk belanja minimal Rp100.000" — bukan disalin dari keluaran fungsi. Menyalin keluaran fungsi berarti mengunci perilakunya apa adanya, termasuk kesalahannya.
Bilangan pecahan butuh perlakuan khusus. Komputer menyimpan 0,1 dan 0,2 sebagai pecahan biner yang tidak persis, sehingga 0.1 + 0.2 menghasilkan 0.30000000000000004 dan perbandingan dengan 0.3 bernilai salah. Pembandingnya adalah math.isclose(a, b), yang menganggap dua angka sama bila selisihnya sangat kecil dibanding besarnya.
import math
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # False
print(math.isclose(0.1 + 0.2, 0.3)) # True