Lewati ke konten utama

Test-Driven Development di Python: Panduan untuk Pemula

Pelajari test-driven development (TDD) melalui tutorial Python komprehensif. Ketahui cara menulis pengujian yang andal sebelum mulai menulis kode dengan contoh praktis.
Diperbarui 29 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Pengujian memberi Anda keyakinan bahwa kode Anda melakukan apa yang Anda harapkan. Dalam tutorial ini, kita akan mempelajari dasar-dasar test-driven development (TTD) menggunakan Python. Untuk memulai, kita akan membahas latar belakang test-driven development – apa itu dan mengapa menulis pengujian terlebih dahulu bermanfaat saat menulis kode. Kita akan mengambil pendekatan test-first, yaitu kita akan menulis kasus uji yang gagal terlebih dahulu untuk fungsi yang ingin kita implementasikan sebelum menulis fungsi sebenarnya.

Prasyarat Tutorial

Untuk tutorial ini, Anda memerlukan pemahaman dasar tentang Python; jika Anda perlu menyegarkan pengetahuan Python Anda, Anda dapat melihat kursus ini: Introduction to Python for Developers.

Pendekatan test-first akan membantu kita memikirkan perilaku yang diinginkan dan keluaran yang diharapkan. Anda dapat menggunakan berbagai pustaka untuk melakukan pengujian di Python, seperti pytest dan unnitest. Namun, untuk saat ini, kita akan fokus pada cara menulis kasus uji sederhana menggunakan Native Python yang akan memvalidasi bahwa fungsionalitas yang diinginkan menghasilkan keluaran yang diharapkan.

Kita akan mulai dengan sebuah kasus uji sederhana dan secara bertahap memperluas kasus uji untuk mencakup berbagai skenario. Saat kita memperluas kasus uji, kita mungkin menemukan bug atau celah dalam logika implementasi awal yang perlu kita perbaiki. Proses keseluruhan menulis kasus uji yang semakin canggih secara iteratif, melihatnya gagal, lalu kembali dan memperbaiki implementasi kita ini adalah inti dari test-driven development dengan Python.

Untuk tutorial ini, kita akan menggunakan DataLab, notebook data berbasis cloud dari DataCamp yang memungkinkan Anda menulis dan menjalankan kode Python tanpa perlu memasang apa pun secara lokal. Mari kita mulai!

Memulai dengan DataLab

Sebelum kita dapat memulai test-driven development, kita perlu menjelajahi DataLab dan memahami cara menggunakannya agar dapat membantu perjalanan belajar kita. Jika Anda membuka DataLab, Anda akan melihat banyak pilihan. Untuk saat ini, kita akan fokus pada penulisan Python di DataLab.

image5.png

Jika Anda memilih Python, workbook akan membuka sebuah sel kode untuk Anda menulis Python. Tampilannya akan seperti ini:

image4.png

Ada beberapa opsi berguna di sini. Misalnya, Anda dapat menjalankan sel untuk menghasilkan keluaran, menambahkan komentar atau catatan untuk mendukung pembelajaran Anda, serta memanfaatkan AI untuk membantu Anda memulai atau mengatasi hambatan. Anda juga dapat menambah atau menghapus sel sebanyak yang Anda perlukan. Kita akan fokus pada menjalankan sel dengan opsi "Run". Seperti yang terlihat pada kode di bawah, keluaran apa pun yang dihasilkan kode Anda akan dicatat di bawahnya saat Anda menjalankan sel.

Catatan singkat: Jika Anda menggunakan beberapa sel dan mendefinisikan sebuah variabel di satu sel tetapi mencoba mengaksesnya di sel lain, Anda perlu menjalankan setiap sel secara terpisah atau keseluruhan workbook (dari tombol "Run" di pojok kanan atas workbook Anda).

image7.png

Sekarang kita sudah memahami dasar-dasar DataLab, mari mulai dengan test-driven development.

Test Driven Development

Test-driven development berarti menulis pengujian untuk kode Anda sebelum Anda menulis kodenya. Untuk menjelaskan TTD, mari mulai dengan contoh yang sangat sederhana yang melibatkan penulisan skrip Python untuk menjumlahkan angka. Namun, sebelum kita menulis fungsinya, kita akan menulis pengujian untuk memeriksa apakah 1 + 1 sama dengan 2. Anda dapat melakukannya menggunakan native Python seperti di bawah ini.

assert 1 + 1 == 2

Kata kunci assert dalam Python digunakan untuk menulis kasus uji dan memastikan bahwa kondisi program bernilai True. Ini memungkinkan Anda memvalidasi perilaku dan keluaran kode Anda. Ketika pernyataan assert gagal, Python akan melempar AssertionError, menandakan adanya masalah pada kode. Tampilannya akan seperti ini di workbook DataLab Anda:

image1.png

Contoh 1: Menguji Fungsi Sederhana

Mari mulai dengan fungsi pengujian. Untuk memulai, buka file Python di DataLab. Test-driven development melibatkan penulisan pengujian yang gagal terlebih dahulu. Jadi, mari menulis pengujian yang gagal dengan memanggil fungsi add() yang belum didefinisikan.

assert add(1, 1) == 2

Ini akan menghasilkan NameError, yang menunjukkan bahwa belum ada implementasi, dikenal sebagai langkah "merah". Anda mendapatkan NameError ketika mencoba memanggil fungsi atau variabel yang belum didefinisikan.

image3.png

Sekarang saatnya mengimplementasikan fungsinya. Kita dapat melakukannya dengan mendefinisikan fungsi:

def add(num1, num2):
    return

Kita telah mendefinisikan fungsi add yang menerima dua parameter, num1 dan num2. Fungsi kita belum mengembalikan apa pun. Mari kita lihat apakah implementasi fungsi kita lulus pengujian!

image6.png

Kita tidak lagi melihat NameError. Namun, menjalankan sel masih menghasilkan kesalahan! Kali ini adalah AssertionError. Jadi pengujian kita masih gagal! Mengapa kita mendapatkan kesalahan ini? Karena kita mendefinisikan fungsi yang belum mengembalikan apa pun.

Saat menjalankan pengujian, kita mendapatkan AssertionError karena 1 + 1 tidak sama dengan 2 dengan implementasi kosong kita. Akhirnya, kita dapat membuatnya lolos dengan mengimplementasikan logika yang benar dalam fungsi.

image9.png

Anda akan melihat titik hijau di pojok sel. Ini menunjukkan bahwa kode Anda valid dan berhasil dijalankan saat Anda menjalankan sel tersebut. Sebelumnya, Anda akan melihat warnanya merah dengan galat saat dijalankan dan menampilkan jenis galat di bawah sel. Fitur ini berguna untuk men-debug kode Anda di DataLab.

Anda kini telah menulis pengujian pertama Anda di Python menggunakan test-driven development. Kerja bagus! Selanjutnya, kita akan memperluas pengujian dan memikirkan cara menangkap potensi kesalahan yang akan menyebabkan fungsi kita gagal atau tidak menghasilkan keluaran yang diharapkan.

Contoh 2: Banyak Kasus Uji

Menguji dengan hanya satu nilai masukan sering kali gagal mengungkap potensi kesalahan. Bug mudah bersembunyi, terutama jika fungsi Anda bergantung pada masukan pengguna yang bervariasi atau logika eksternal. Jadi, bagaimana kita dapat menguji fungsi secara menyeluruh terhadap banyak nilai?

Sebagai contoh, bagaimana jika tipe data yang salah diteruskan ke fungsi? Anda bisa memanfaatkan framework pengujian Python, tetapi mari gunakan Python dasar saja. Pertama, saya akan mendefinisikan daftar kamus masukan untuk mensimulasikan berbagai skenario penggunaan:

test_cases = [
    {"num1": 1, "num2": 3, "expected": 4},
    {"num1": 1, "num2": "invalid", "expected": "Error: num2 must be a number"}, 
    {"num1": [1,2,3], "num2": 2, "expected": "Error: num1 must be a number"},
    {"num1": -1, "num2": 1, "expected": 0},
    {"num1": 3.5, "num2": 2.5, "expected": 6.0}, 
    {"num1": 100, "num2": 200, "expected": 300}
]

Kode di atas menampilkan masukan untuk fungsi beserta keluaran yang diharapkan. Namun, kita harus memperbarui pengujian kita untuk mengiterasi kasus-kasus uji ini. Kita dapat memvalidasi setiap kamus dalam daftar dengan menempatkan assert di dalam for loop.

for test in test_cases:
    assert add(test["num1"], test["num2"]) == test["expected"]

Karena fungsi belum berubah, apakah kita mengharapkan pengujian ini lulus atau gagal? Dan kesalahan apa yang mungkin terjadi?

image8.png

Pengujian melempar galat TypeError karena kita belum menangani masukan non-numerik; bagaimana jika sebuah string atau boolean diteruskan alih-alih int? Kita dapat memperbarui fungsi untuk menangkap kasus-kasus ini! Kita dapat mengembalikan pesan khusus pada tipe yang tidak valid dengan memeriksa bahwa variabel masukan bertipe integer atau float.

def add(num1, num2):
    if type(num1) is not int and type(num1) is not float:
        return "Error: num1 must be a number"
    elif type(num2) is not int and type(num2) is not float:
        return "Error: num2 must be a number"
    else:
        return num1 + num2

Saat kita menjalankan ulang pengujian, kita tidak lagi mendapatkan galat, sehingga pengujian kita lulus. Sekarang kita dapat melihat lingkaran hijau menunjukkan bahwa kita telah mengimplementasikan beberapa pengujian yang lulus. Bagus!

image2.png

Pemikiran Akhir

Dalam tutorial ini, kita membahas dasar-dasar test-driven development di Python menggunakan DataLab. DataLab menyediakan cloud IDE yang memungkinkan Anda menulis dan menjalankan kode Python tanpa perlu pemasangan lokal. Pengujian memvalidasi perilaku kode dan menangkap kesalahan sejak dini. Pernyataan assert memeriksa kondisi dan memunculkan pengecualian saat terjadi kegagalan.

Anda dapat mengeksplorasi lebih banyak kasus uji dan mulai menulis pengujian sendiri di DataLab! Jika Anda ingin mempelajari lebih lanjut tentang pengujian di Python, lihat kursus DataCamp kami - Introduction to Testing in Python.


Amina Edmunds's photo
Author
Amina Edmunds
LinkedIn

Amina adalah intern pengembangan konten di Datacamp. Dengan latar belakang Arsitektur dan Pendidikan, ia beralih karier untuk menekuni pengembangan perangkat lunak, dimulai dengan JavaScript; kini ia berfokus pada Python.

Topik
Python

Mulai Perjalanan Pengujian Anda Hari Ini!

Kursus

Pengantar Pengujian di Python

4 jam
26.6K
Kuasai pengujian Python: Pelajari metode, buat pemeriksaan, dan pastikan kode bebas kesalahan dengan pytest dan unittest.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya