Tutorial Pytest untuk Pemula: Fixtures, Parametrize dan Contoh Nyata
Pytest memungkinkan Anda menulis tes Python dengan fungsi biasa dan pernyataan tegas. Bangun rangkaian pengujian kecil langkah demi langkah, baca keluaran kegagalan nyata, dan pelajari fitur yang akan Anda gunakan setiap hari.
- Pytest menemukan fungsi bernama
test_*dan memeriksanya dengan pernyataanassertbiasa. - Perlengkapan menyediakan pengaturan dan pembersihan yang dapat digunakan kembali, diminta hanya dengan menamainya sebagai argumen.
@pytest.mark.parametrizemenjalankan satu pengujian dengan banyak masukan.- Letakkan perlengkapan bersama di
conftest.py, dan Anda tidak perlu mengimpornya.
Jika Anda menghindari menulis tes karena terasa seperti sebuah tugas, tutorial pytest ini akan mengubah pikiran Anda. Pytest menghapus sebagian besar upacara: tidak ada kelas untuk diwarisi dan tidak ada metode pernyataan khusus yang perlu diingat. Sebuah tes bisa hanya dua baris.
Kami akan membuat keranjang belanja kecil dan mengujinya langkah demi langkah. Kami menjalankan semuanya di Python 3.13 dengan pytest 9.2, dan keluaran yang ditampilkan adalah nyata, meskipun kami memangkas jalur file dan detail waktu yang akan berbeda di mesin Anda.
Mengapa uji coba?
Python disertakan dengan unittest, yang berfungsi dengan baik, tetapi pytest biasanya merupakan pilihan yang lebih tepat. Berikut adalah cek yang sama di masing-masing:
| Tugas | paling unit | uji coba |
|---|---|---|
| Periksa kesetaraan | self.assertEqual(a, b) |
menegaskan a == b |
| Periksa pengecualian | self.assertRaises(...) |
pytest.raises(...) |
| Struktur pengujian | Kelas yang mewarisi dari TestCase |
Fungsi yang sederhana |
| Pengaturan dan pembersihan | metode setUp dan tearDown. |
Perlengkapan yang dapat digunakan kembali |
| Banyak masukan | subTest putaran |
parameterisasi |
Pytest juga dapat menjalankan pengujian unittest yang ada, sehingga Anda dapat beralih secara bertahap. Ia juga memiliki ekosistem plugin yang besar, termasuk pytest-cov untuk cakupan dan pytest-xdist untuk pengoperasian paralel.
Instal pytest
Buat lingkungan virtual terlebih dahulu, seperti yang dijelaskan dalam tutorial lingkungan virtual Python kami, lalu instal:
pip install pytest
pytest --version
# pytest 9.2.0
Buat folder proyek yang berisi dua file, cart.py dan test_cart.py. Pytest menemukan pengujian secara otomatis dengan mengikuti aturan penamaan: file bernama test_*.py atau *_test.py, fungsi yang dimulai dengan test, dan kelas yang dimulai dengan Test. Jika tes tidak diambil, ketidakcocokan penamaan adalah hal pertama yang harus diperiksa.
Kode untuk diuji
# cart.py
class Cart:
def __init__(self):
self.items = []
def add(self, name, price, qty=1):
if qty < 1:
raise ValueError("qty must be at least 1")
self.items.append((name, price, qty))
def total(self, discount=0):
subtotal = sum(price * qty for _, price, qty in self.items)
return round(subtotal * (1 - discount / 100), 2)
Tes pertamamu
# test_cart.py
from cart import Cart
def test_empty_cart_is_free():
assert Cart().total() == 0
Itu adalah ujian yang lengkap. Jalankan pytest dari folder proyek, dan ini melaporkan satu tes yang lulus. Jika Anda mendapatkan kesalahan impor, jalankan sebagai python -m pytest, yang menambahkan folder saat ini ke jalur impor.
Kegagalan membaca
Di sinilah pytest benar-benar bersinar. Berikut adalah tes dengan nilai yang diharapkan salah:
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
assert c.total() == 1400
Dan inilah yang tercetak saat kami menjalankannya:
def test_wrong_total():
c = Cart()
c.add("Keyboard", 1500)
> assert c.total() == 1400
E assert 1500.0 == 1400
E + where 1500.0 = total()
FAILED fail_example.py::test_wrong_total - assert 1500.0 == 1400
============================== 1 failed in 0.12s ==============================
Tanda > menandai garis gagal, dan garis E menunjukkan nilai sebenarnya. Anda tidak perlu menambahkan pesan khusus, karena pytest menulis ulang pernyataan assert sehingga mereka dapat melaporkan apa yang mereka bandingkan. Hal yang sama berlaku untuk daftar dan kamus, menunjukkan item mana yang berbeda.
Pengecualian pengujian
Penanganan kesalahan juga merupakan perilaku, dan perlu diuji. pytest.raises lolos hanya jika blok tersebut memunculkan pengecualian yang diharapkan:
import pytest
def test_rejects_zero_qty():
with pytest.raises(ValueError, match="at least 1"):
Cart().add("Pen", 10, qty=0)
Argumen opsional match memeriksa pesan menggunakan ekspresi reguler, sehingga ValueError yang berbeda tidak akan lewat begitu saja. Untuk mempelajari cara memunculkan dan menangani kesalahan seperti ini, baca panduan kami tentang penanganan pengecualian Python.
Perlengkapan: pengaturan yang dapat digunakan kembali
Kebanyakan tes memerlukan sesuatu yang dipersiapkan terlebih dahulu. perlengkapan adalah fungsi yang menyediakannya. Hiasi dengan @pytest.fixture, dan tes apa pun yang menamainya sebagai argumen akan menerima hasilnya:
@pytest.fixture
def cart():
c = Cart()
c.add("Keyboard", 1500)
c.add("Mouse", 500, qty=2)
return c
def test_total(cart):
assert cart.total() == 2500
Setiap pengujian mendapat keranjang baru secara default, sehingga pengujian tidak dapat memengaruhi satu sama lain. Pytest mencocokkan nama argumen dengan nama perlengkapan, dan Anda tidak pernah memanggil perlengkapan itu sendiri. @pytest.fixture adalah dekorator, yang kami jelaskan di penjelasan dekorator Python.
Pembersihan dengan hasil
Gunakan yield daripada return ketika Anda perlu membersihkan setelahnya. Kode setelah yield berjalan ketika pengujian selesai, meskipun gagal:
@pytest.fixture
def temp_db():
print("\nopen db")
yield {"users": []}
print("close db")
def test_db(temp_db):
assert temp_db["users"] == []
Berjalan dengan -s untuk menampilkan hasil cetakan yang mengonfirmasi bahwa pesanan telah dibuka, diuji, lalu ditutup.
Cakupan perlengkapan dan conftest.py
Secara default, perlengkapan berjalan satu kali per pengujian. Untuk pengaturan yang mahal, seperti database atau browser, ubah masa pakainya dengan scope:
| Ruang lingkup | Dibuat sekali per |
|---|---|
function (standar) |
Tes |
kelas |
Kelas ujian |
modul |
Mengajukan |
paket |
Paket |
sesi |
Seluruh uji coba dijalankan |
Masukkan perlengkapan yang digunakan oleh beberapa file ke dalam file bernama conftest.py. Pytest memuatnya secara otomatis, sehingga pengujian dapat menggunakan perlengkapannya tanpa impor. Namun berhati-hatilah dengan cakupan bersama, karena perubahan yang dilakukan pada satu pengujian dapat bocor ke pengujian berikutnya.
Parameterisasi: satu pengujian, banyak masukan
Daripada menyalin pengujian untuk setiap nilai, buatlah daftar kasusnya:
@pytest.mark.parametrize("discount, expected", [
(0, 2500),
(10, 2250),
(100, 0),
])
def test_discount(cart, discount, expected):
assert cart.total(discount) == expected
Setiap baris menjadi pengujiannya sendiri, dan Anda dapat melihatnya dalam keluaran verbose dari proses keseluruhan file kami:
test_cart.py::test_total PASSED [ 16%]
test_cart.py::test_discount[0-2500] PASSED [ 33%]
test_cart.py::test_discount[10-2250] PASSED [ 50%]
test_cart.py::test_discount[100-0] PASSED [ 66%]
test_cart.py::test_rejects_zero_qty PASSED [ 83%]
test_cart.py::test_empty_cart_is_free PASSED [100%]
============================== 6 passed in 0.05s ==============================
Jika satu baris gagal, baris lainnya tetap berjalan, dan namanya memberi tahu Anda nilai mana yang menyebabkan masalah. Perhatikan bahwa kami menggabungkan parameterisasi dengan perlengkapan cart. Untuk memilih nilai yang kemungkinan besar menemukan bug, gunakan analisis nilai batas.
Kiat: Jika parameter Anda panjang atau tidak jelas, teruskan ids=["none", "ten", "full"] agar setiap kasus diberi nama yang mudah dibaca dalam laporan.
Perlengkapan bawaan yang berguna
Pytest mencakup beberapa perlengkapan siap pakai. Keduanya sangat berguna, dan keduanya lolos dalam proses kami:
def test_write_report(tmp_path):
report = tmp_path / "report.txt"
report.write_text("passed")
assert report.read_text() == "passed"
def read_mode():
return os.environ.get("APP_MODE", "dev")
def test_mode(monkeypatch):
monkeypatch.setenv("APP_MODE", "staging")
assert read_mode() == "staging"
tmp_path memberikan setiap pengujian folder sementara yang unik, sehingga pengujian tidak pernah menyentuh file sebenarnya. monkeypatch mengubah variabel atau atribut lingkungan, dan membatalkan perubahan saat pengujian berakhir. Yang berguna lainnya adalah capsys, yang menangkap hasil cetakan sehingga Anda dapat memeriksanya.
Penanda: lewati dan xgagal
Penanda menambahkan label dan perilaku ke pengujian:
@pytest.mark.skip(reason="payment sandbox is down")
def test_payment():
assert False
@pytest.mark.xfail(reason="floating point")
def test_rounding():
assert 0.1 + 0.2 == 0.3
skip tidak menjalankan tes sama sekali. xfail menjalankannya tetapi mengharapkan kegagalan, sehingga masalah yang diketahui tidak merusak build Anda. Dengan pengujian tambahan lainnya dalam file yang sama, proses kami diringkas sebagai 3 passed, 1 skipped, 1 xfailed. Omong-omong, tes pembulatan itu benar-benar gagal: dalam aritmatika floating point, 0,1 + 0,2 tidak persis 0,3. Gunakan pytest.approx(0.3) saat membandingkan desimal.
Anda juga dapat membuat penanda Anda sendiri, seperti @pytest.mark.slow, dan menjalankan penanda tersebut dengan pytest -m slow saja, atau mengabaikannya dengan -m "not slow". Daftarkan penanda khusus di file konfigurasi Anda untuk menghindari peringatan.
Bendera baris perintah yang berguna
| Perintah | Apa fungsinya |
|---|---|
uji coba -v |
Tampilkan setiap nama tes |
uji coba -q |
Tampilkan ringkasan yang lebih singkat |
uji coba -x |
Berhenti pada kegagalan pertama |
diskon pytest -k |
Jalankan tes yang namanya cocok dengan sebuah kata |
uji coba -s |
Tampilkan keluaran print. |
uji coba --lf |
Jalankan kembali hanya kegagalan terakhir |
uji coba --pdb |
Buka debugger jika gagal |
pytest test_cart.py::test_total |
Jalankan satu tes tertentu |
Menjalankan pytest di CI
Pengujian menjadi sangat berharga jika dijalankan secara otomatis pada setiap perubahan. Pekerjaan GitHub Actions minimal terlihat seperti ini:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install -r requirements.txt
- run: python -m pytest
Pytest keluar dengan kode bukan nol ketika pengujian gagal, yang menyebabkan pipeline berhenti. Kami tidak menjalankan file alur kerja ini, jadi sesuaikan dengan proyek Anda. Panduan CI/CD Tindakan GitHub kami menjelaskan detailnya. Pytest juga berfungsi dengan baik untuk pengujian browser, seperti yang ditunjukkan dalam Tutorial Selenium Python dan Tutorial Model Objek Halaman kami.
Penutup
Anda sekarang memiliki apa yang Anda perlukan untuk sebagian besar rangkaian pengujian Python: pernyataan sederhana, perlengkapan untuk penyiapan, parameterisasi untuk variasi, dan beberapa tanda untuk kecepatan. Mulailah dari yang kecil. Pilih satu fungsi yang baru-baru ini Anda perbaiki bugnya dan tulis tes untuk bug tersebut terlebih dahulu. Jika Anda tidak yakin apa yang harus diuji di setiap level, baca tentang pengujian unit vs integrasi.
Pertanyaan yang sering diajukan
Untuk apa pytest digunakan?
Pytest adalah kerangka pengujian Python. Ini digunakan untuk pengujian unit, integrasi dan API, dan juga berfungsi baik dengan alat browser seperti Selenium dan Playwright.
Apakah pytest lebih baik daripada unittest?
Banyak tim lebih menyukainya karena sintaksisnya yang lebih sederhana, perlengkapannya, dan kegagalannya yang lebih jelas. unittest tidak memerlukan instalasi, dan pytest juga dapat menjalankan pengujian unittest yang ada.
Apa perlengkapan di pytest?
Fixture adalah fungsi yang menyiapkan sesuatu yang dibutuhkan pengujian, seperti data atau koneksi. Tes menerimanya dengan menamainya sebagai argumen.
Apa itu conftest.py?
Ini adalah file khusus untuk berbagi perlengkapan dan kait di seluruh file pengujian. Pytest memuatnya secara otomatis, jadi perlengkapannya tidak memerlukan pernyataan import.
Mengapa pytest tidak menemukan tes saya?
Biasanya ini adalah masalah penamaan. File harus diberi nama test_*.py atau *_test.py, dan fungsi harus dimulai dengan test. Periksa juga apakah Anda menjalankannya dari folder yang benar.
Teruslah belajar
Butuh bantuan dengan pengujian, WordPress atau SEO?
Kami membantu tim mengirimkan perangkat lunak yang lebih baik dan mengembangkan situs mereka. Beritahu kami apa yang sedang Anda kerjakan dan kami akan menyarankan langkah selanjutnya yang jelas.
Panduan lebih lanjut tentang pengujian, AI & pengembangan modern
Menikmati artikel ini? Pilih topik dan langsung masuk ke tutorial terbaru kami.
Penjelasan Halusinasi AI: Mengapa Model Bahasa Memperbaiki Masalah dan Cara Menguranginya
Halusinasi AI menjelaskan: apa itu, mengapa model bahasa memproduksinya, tipe umum, cara menguranginya dengan landasan dan petunjuk, dan pemeriksaan…
Baca artikel →DevOpsPenjelasan Variabel Lingkungan: File .env, Rahasia, dan Konfigurasi Dilakukan dengan Benar
Variabel lingkungan dijelaskan dengan contoh Python yang kami jalankan: membaca dan mengaturnya, mengapa setiap nilai berupa string, file .env, pewa…
Baca artikel →Pengembangan perangkat lunakPenjelasan Pembatasan Kecepatan API: Algoritma, Header, dan Penanganan 429 Kesalahan
Pembatasan laju API dijelaskan dengan simulasi yang kami jalankan: keranjang token, jendela tetap, jendela geser, respons 429, header batas laju, pe…
Baca artikel →Otomatisasi pengujianMengejek dengan Python: unittest.mock, patch dan Kesalahan yang Membuat Tes Berbohong
Mengejek dengan Python dengan unittest.mock, menguji: Mock dan return_value, side_effect, menambal di mana nama digunakan, spesifikasi dan autospec,…
Baca artikel →Pengujian perangkat lunakPenjelasan Cakupan Kode: Cakupan Jalur vs Cabang dan Apa Arti 100% Sebenarnya
Cakupan kode dijelaskan dengan coverage.py yang sebenarnya dijalankan: cakupan garis, cabang dan kondisi, membaca laporan, mengapa cakupan 100% masi…
Baca artikel →Basis data & SQLDELETE vs TRUNCATE vs DROP dalam SQL: Perbedaan, Rollback dan Kapan Menggunakan Masing-Masing
DELETE vs TRUNCATE vs DROP dijelaskan dengan SQL yang diuji: apa yang dihapus, rollback, pemicu, reset identitas, kecepatan, dan perbedaan PostgreSQ…
Baca artikel →Basis data & SQLPenjelasan Tampilan SQL: Membuat, Menggunakan, dan Menghindari Kesalahan, Dengan Contoh
Tampilan SQL dijelaskan dengan kueri yang kami jalankan: membuat tampilan, hasil langsung, menyembunyikan kolom, kinerja, tampilan yang dapat diperb…
Baca artikel →Pengembangan perangkat lunakAntarmuka TypeScript vs Tipe: Perbedaan Nyata, Diuji Dengan Kompiler
Antarmuka TypeScript vs tipe, diperiksa dengan kompiler sebenarnya: apa yang bisa dilakukan keduanya, apa yang hanya bisa dilakukan satu orang, peng…
Baca artikel →Pengembangan perangkat lunakPenjelasan Python *args dan **kwargs: Fungsi Fleksibel Dengan Contoh Jelas
Python *args dan **kwargs dijelaskan dengan kode yang kami jalankan: pengepakan dan pembongkaran, urutan parameter, argumen hanya kata kunci dan pos…
Baca artikel →Pengembangan perangkat lunakFungsi Python Lambda: Sintaks, Kegunaan Sebenarnya, dan Kapan Tidak Digunakan
Fungsi python lambda dijelaskan dengan kode yang kami jalankan: sintaksis, pengurutan dengan kunci, peta dan filter, penutupan, jebakan pengikatan a…
Baca artikel →Kecerdasan buatanApa Itu Agen AI? Cara Kerjanya, Dengan Agent Loop Sederhana yang Dapat Anda Jalankan
Apa itu agen AI? Panduan sederhana tentang loop agen, alat, memori, dan pagar pembatas, dengan loop Python kecil yang kami jalankan, risiko nyata da…
Baca artikel →DevOpsPemantauan vs Observabilitas: Perbedaan Nyata, Dengan Log, Metrik, dan Jejak
Penjelasan pemantauan vs observabilitas: kegagalan yang diketahui dan tidak diketahui, log, metrik dan jejak, penelusuran insiden checkout, sinyal e…
Baca artikel →DevOpsVolume Docker vs Bind Mounts: Pertahankan Data Kontainer dengan Cara yang Benar
Volume Docker vs pengikatan pengikat dijelaskan: mengapa data kontainer menghilang, volume yang diberi nama, pengikatan pengikatan, tmpfs, contoh Tu…
Baca artikel →Otomatisasi pengujianTDD vs BDD: Perbedaan Utama, Satu Fitur Dibangun dengan Dua Cara dan Kapan Menggunakan Masing-masing
TDD vs BDD dijelaskan dengan satu fitur diskon yang dibuat dengan dua cara: refactor merah-hijau dengan kode yang kami jalankan, skenario Mengingat-…
Baca artikel →Pengujian perangkat lunakUser Acceptance Testing (UAT): Proses, Checklist dan Contoh Nyata
Pengujian penerimaan pengguna menjelaskan: siapa yang menjalankannya, perbedaannya dengan QA, proses tujuh langkah, templat kasus uji UAT, daftar pe…
Baca artikel →Basis data & SQLPenjelasan Nilai NULL SQL: IS NULL, COALESCE, NULLIF dan Jebakan yang Harus Dihindari
Nilai SQL NULL dijelaskan dengan kueri yang kami jalankan: logika tiga nilai, IS NULL, COALESCE, NULLIF, cara agregat, penggabungan, dan pengurutan …
Baca artikel →Basis data & SQLPernyataan SQL CASE WHEN: Sintaks, Contoh Nyata dan Kesalahan Umum
SQL CASE KETIKA dijelaskan dengan kueri yang kami jalankan: formulir sederhana dan dicari, urutan kondisi, pivot dengan SUM, trik COUNT, pengurutan …
Baca artikel →Pengembangan perangkat lunakApa itu JWT? Token Web JSON Dijelaskan Dengan Contoh Kerja
Apa itu JWT? JSON Web Tokens menjelaskan: tiga bagian, token yang dibuat dan dirusak dalam kode yang kami jalankan, sesi JWT vs, penyimpanan, token …
Baca artikel →Pengembangan perangkat lunakPenjelasan Loop Acara JavaScript: Call Stack, Microtasks, dan Timer Dengan Contoh
Perulangan peristiwa JavaScript dijelaskan dengan kode yang kami jalankan: tumpukan panggilan, antrian tugas dan tugas mikro, mengapa setTimeout 0 t…
Baca artikel →Pengembangan perangkat lunakGenerator Python dan Penjelasan Hasil: Menghemat Memori Dengan Contoh Nyata
Generator dan hasil Python dijelaskan dengan kode yang kami jalankan: bagaimana mereka menjeda dan melanjutkan, mengukur penghematan memori, saluran…
Baca artikel →Kecerdasan buatanApa itu Embedding? Kesamaan Vektor dan Kosinus Dijelaskan Secara Sederhana
Apa itu embeddings? Panduan bahasa sederhana tentang vektor, kesamaan kosinus, dan penelusuran semantik, dengan contoh kecil yang kami jalankan, pen…
Baca artikel →DevOpsPenerapan Biru-Hijau vs Canary: Perbedaan, Kompromi, dan Cara Memilih
Penjelasan penerapan blue-green vs canary: cara kerja masing-masing, biaya, risiko dan rollback, pengelompokan pengguna stabil yang kami uji, migras…
Baca artikel →Otomatisasi pengujianTes Tidak Stabil: Apa Penyebabnya dan Cara Memperbaikinya untuk Kebaikan
Pengujian yang tidak stabil dijelaskan dengan demo yang kami jalankan: penyebab utama, cara mengonfirmasi dan mendiagnosisnya, perbaikan waktu yang …
Baca artikel →Pengujian perangkat lunakLoad Testing vs Stress Testing: Perbedaan, Metrik dan Contoh k6
Penjelasan pengujian beban vs pengujian stres: apa yang dibuktikan masing-masing, pengujian lonjakan dan rendam, metrik yang penting, mengapa rata-r…
Baca artikel →Pengujian perangkat lunakKasus Uji vs Skenario Uji: Perbedaan Utama, Contoh, dan Kapan Menggunakan Masing-masing
Penjelasan kasus uji vs skenario pengujian: definisi yang jelas, tabel berdampingan, satu fitur pengaturan ulang kata sandi yang diambil dari skenar…
Baca artikel →Basis data & SQLOptimasi Kueri SQL: Baca Rencana Eksekusi dan Perbaiki Kueri Lambat, Dengan Pengaturan Waktu
Pengoptimalan kueri SQL diuji pada sejuta baris: membaca rencana eksekusi, menambahkan indeks yang tepat, memperbaiki filter yang tidak dapat disarg…
Baca artikel →Basis data & SQLSQL UNION vs UNION ALL: Perbedaan, Contoh dan Kinerja Diuji
SQL UNION vs UNION ALL dijelaskan dengan kueri yang kami jalankan: duplikat, aturan yang diikuti keduanya, bug data nyata, kinerja terukur, INTERSEC…
Baca artikel →Pengembangan perangkat lunakTutorial API Pengambilan JavaScript: GET, POST, Penanganan Kesalahan, dan Batas Waktu
Tutorial JavaScript Fetch API diuji pada server lokal: GET dan POST, mengapa 404 tidak muncul, bantuan yang dapat digunakan kembali, string kueri, b…
Baca artikel →Pengembangan perangkat lunakPenanganan File Python: Baca, Tulis, CSV, JSON dan pathlib Dengan Contoh
Penanganan file Python dijelaskan dengan kode yang kami jalankan: mode terbuka, dengan, membaca file besar, CSV, JSON, pathlib, file biner, penulisa…
Baca artikel →Pengembangan perangkat lunakKelas dan Objek Python: Tutorial OOP Dengan Contoh Nyata
Kelas dan objek Python dijelaskan dengan kode yang kami jalankan: __init__, metode, atribut kelas vs instance, warisan, properti, metode dunder, kel…
Baca artikel →Kecerdasan buatanApa Itu Model Bahasa Besar? Bagaimana LLM Bekerja, Dijelaskan Tanpa Hype
Apa yang dimaksud dengan model bahasa besar? LLM dijelaskan dalam bahasa sederhana: token, penyematan, perhatian, pelatihan, jendela suhu dan kontek…
Baca artikel →DevOpsPerintah Linux untuk Pemula: Panduan Terminal Penting Dengan Contoh
Perintah Linux untuk pemula, dikelompokkan berdasarkan tugas: navigasi, file, melihat log, grep, pipa, izin, proses dan arsip, dengan contoh analisi…
Baca artikel →Otomatisasi pengujianSelenium vs Penulis Drama: Perbedaan Utama, Perbandingan Kode, dan Mana yang Harus Dipilih
Selenium vs Playwright dibandingkan: arsitektur, menunggu, dukungan browser dan bahasa, debugging, pengujian yang sama di kedua alat, saran migrasi …
Baca artikel →Pengujian perangkat lunakPartisi Ekivalensi: Teknik Desain Tes Dijelaskan Dengan Contoh yang Dikerjakan
Penjelasan partisi ekivalensi: cara menemukan partisi yang valid dan tidak valid, contoh yang berfungsi untuk usia, kata sandi dan kupon, pengujian …
Baca artikel →Pengujian perangkat lunakSeverity vs Priority dalam Pengujian Perangkat Lunak: Perbedaan, Matriks dan Contoh Nyata
Keparahan vs prioritas dalam pengujian perangkat lunak dijelaskan: definisi yang jelas, matriks empat arah dengan contoh, skala level, siapa yang me…
Baca artikel →Basis data & SQLTutorial Subkueri SQL: Jenis, Subkueri yang Berkorelasi, dan ADA Dengan Contoh
Tutorial subkueri SQL dengan kueri yang kami jalankan: subkueri skalar, IN, FROM dan SELECT, subkueri yang berkorelasi, EXISTS, jebakan NOT IN NULL …
Baca artikel →Basis data & SQLPenjelasan Transaksi SQL dan ACID: COMMIT, ROLLBACK dan Tingkat Isolasi
Transaksi SQL dan ACID dijelaskan dengan transfer bank yang kami jalankan: COMMIT, ROLLBACK, savepoint, kunci, tingkat isolasi, pembacaan kotor, keb…
Baca artikel →Pengembangan perangkat lunakLembar Cheat Perintah Git: Perintah yang Sebenarnya Anda Gunakan, Beserta Contohnya
Lembar contekan perintah Git yang dikelompokkan berdasarkan tugas: pengaturan, pementasan, cabang, remote, simpanan, riwayat, dan pembatalan kesalah…
Baca artikel →Pengembangan perangkat lunakPenjelasan Janji JavaScript: lalu, tangkap, Janji.semua, dan Kesalahan Umum
Janji JavaScript dijelaskan dengan kode yang kami jalankan: status, rantai lalu dan tangkap, penanganan kesalahan, Promise.all, allSettled, race dan…
Baca artikel →Pengembangan perangkat lunakTutorial Kamus Python: Metode, Contoh dan Pola Umum
Tutorial kamus Python dengan kode yang kami jalankan: membuat, membaca dan memperbarui dicts, metode utama, penggabungan, pemahaman, pola penghitung…
Baca artikel →Kecerdasan buatanApa itu RAG? Generasi Retrieval-Augmented Dijelaskan Dengan Contoh Kerja
Apa itu RAG? Generasi yang ditambah pengambilan dijelaskan langkah demi langkah: pengindeksan, pemotongan, penyematan, pengambilan, contoh kecil Pyt…
Baca artikel →DevOpsTutorial Terraform untuk Pemula: Infrastruktur sebagai Kode Dari File Pertama hingga Modul
Tutorial Terraform untuk pemula: mulai tanpa akun cloud, pelajari init, rencanakan dan terapkan, lalu variabel, keluaran, status, modul, dan alur ke…
Baca artikel →DevOpsDocker vs Kubernetes: Perbedaan Utama, Cara Kerja Sama, dan Yang Anda Butuhkan
Docker vs Kubernetes menjelaskan: apa yang dilakukan masing-masing, aplikasi yang sama dijalankan dengan keduanya, Docker Compose dan Swarm dibandin…
Baca artikel →Otomatisasi pengujianTutorial Pytest untuk Pemula: Fixture, Parametrize dan Contoh Nyata
Tutorial pytest untuk pemula dengan pengujian yang kami jalankan di pytest 9.2: pernyataan, perlengkapan, parametrize, conftest, marker, tmp_path, m…
Baca artikel →Pengujian perangkat lunakSiklus Hidup Pengujian Perangkat Lunak (STLC): 6 Fase, Kriteria Masuk dan Keluar, Contoh
Siklus hidup pengujian perangkat lunak menjelaskan: enam fase STLC dengan kriteria masuk dan keluar, hasil, contoh fitur login yang berfungsi, STLC …
Baca artikel →Pengembangan perangkat lunakGit merge vs rebase: perbedaan, contoh, dan kapan memakai masing-masing
Git merge vs rebase dijelaskan dengan keluaran log nyata, tabel perbandingan, aturan emas rebase, dan alur kerja tim yang aman.
Baca artikel →Pengembangan perangkat lunakList Comprehension Python: Sintaks, Contoh, dan Kapan Harus Dihindari
List comprehension Python dijelaskan: sintaks, filter, if-else, perulangan bersarang, waktu yang diukur, dan kapan perulangan for biasa lebih baik.
Baca artikel →Basis data & SQLPenjelasan SQL JOIN dengan Contoh (Inner, Left, Right, Full)
Pahami SQL JOIN langkah demi langkah dengan tabel dan query contoh: INNER, LEFT, RIGHT, FULL, CROSS, dan SELF, plus kesalahan umum dan tips performa.
Baca artikel →