Memeriksa Pengecualian di Python Menggunakan doctest

Ketika menulis kode di Python, kita sering perlu memastikan bahwa fungsi kita berperilaku seperti yang diharapkan, terutama dalam hal penanganan kesalahan. Salah satu skenario umum adalah menguji apakah sebuah fungsi menghasilkan pengecualian dalam kondisi tertentu. Jika Anda menggunakan modul doctest Python untuk melakukan pengujian, Anda mungkin bertanya: Bisakah saya memeriksa bahwa sebuah pengecualian dilempar dengan doctest? Jawabannya adalah ya! Mari kita jelajahi bagaimana menggunakan doctest untuk memverifikasi pengecualian dalam fungsi Python Anda.

Masalah: Menguji Pengecualian

Pertimbangkan sebuah fungsi bernama foo(x). Fungsi ini dirancang untuk menghasilkan pengecualian jika argumennya kurang dari nol. Pertanyaan utama di sini adalah bagaimana menulis sebuah doctest yang mengonfirmasi bahwa fungsi tersebut berfungsi dengan benar dalam skenario ini. Secara khusus, ketika kita memasukkan nilai kurang dari nol, kita ingin memastikan bahwa sebuah pengecualian dihasilkan untuk menunjukkan bahwa sesuatu telah salah.

Contoh Fungsi

Berikut adalah versi sederhana dari fungsi foo(x):

def foo(x):
    if x < 0:
        raise ValueError("x harus tidak negatif")
    return x

Solusi: Menulis doctest

Untuk membuat doctest yang memeriksa pengecualian, kita akan menggunakan pendekatan berikut. Dalam doctest kita, kita dapat menentukan bahwa kita mengharapkan sebuah pengecualian dihasilkan saat memanggil foo() dengan nilai yang seharusnya memicu kesalahan tersebut. Berikut cara melakukannya langkah demi langkah:

Langkah 1: Tulis Doctest

Dalam docstring fungsi Anda, Anda dapat menambahkan sebuah kasus uji yang menunjukkan pengecualian yang diharapkan. Berikut adalah tampilannya:

def foo(x):
    """
    Mengembalikan x jika tidak negatif.
    
    Menghasilkan:
        ValueError: Jika x < 0.
    
    Contoh:
    >>> foo(-1)
    Traceback (panggilan terakhir yang paling baru):
      ...
    ValueError: x harus tidak negatif
    >>> foo(3)
    3
    """
    if x < 0:
        raise ValueError("x harus tidak negatif")
    return x

Langkah 2: Jalankan Doctest

Untuk menjalankan doctest, sertakan cuplikan berikut di bagian bawah skrip Python Anda:

if __name__ == "__main__":
    import doctest
    doctest.testmod()

Langkah 3: Output yang Diharapkan

Ketika Anda menjalankan skrip, doctest akan memproses contoh-contoh dalam docstring. Jika semuanya berfungsi dengan baik, Anda tidak akan melihat output (menunjukkan semua tes telah berhasil). Jika pengecualian tidak dihasilkan seperti yang diharapkan, doctest akan melaporkan kesalahan.

Sumber Daya Tambahan

Untuk informasi lebih lanjut tentang cara menggunakan doctest secara efektif dalam modul Anda, lihat dokumentasi modul doctest resmi.

Kesimpulan

Menggunakan doctest untuk memverifikasi bahwa pengecualian dihasilkan dengan benar tidak hanya mungkin; itu sederhana! Dengan menambahkan beberapa baris dalam docstring fungsi Anda, Anda dapat secara efektif mendokumentasikan dan menguji perilaku kode Anda, memastikan bahwa ia mematuhi pola yang diharapkan. Apakah Anda sedang menulis fungsi baru atau menguji yang sudah ada, doctest menawarkan cara yang kuat untuk menyertakan pengujian yang didorong oleh contoh secara langsung di samping kode Anda. Nikmati membuat kode Anda kokoh, dan selamat berkoding!