Jenkins • CI/CD
Jenkins: JUnit Report dan Artifact Pytest
Log konsol berguna, tetapi sulit dipakai untuk membandingkan test antar-build. JUnit XML berisi hasil test; artifact menyimpan file bukti seperti screenshot dan trace. Keduanya melayani kebutuhan yang berbeda dan tidak boleh dianggap saling menggantikan.
Lihat kelas Jenkins CI/CD for QAPanduan Ini Cocok untuk Siapa?
- Pemula yang sudah memahami Python dasar
- Peserta yang ingin latihan dengan hasil terukur
- Praktisi yang sedang merapikan alur automation
Roadmap Belajar Bertahap
-
Langkah 1
Siapkan prasyarat
Cek environment dan file latihan sebelum menjalankan perintah.
-
Langkah 2
Jalankan contoh minimal
Mulai dari satu test agar penyebab kegagalan mudah ditelusuri.
-
Langkah 3
Baca hasil dan coba kegagalan
Ubah ekspektasi untuk memastikan assertion benar-benar bekerja.
-
Langkah 4
Hubungkan ke project
Adaptasi data dan locator, lalu lanjutkan ke panduan terkait.
Hasilkan XML dari runner yang sama
Untuk project pada tutorial pipeline, gunakan perintah berikut dari root repository. Report disimpan relatif terhadap workspace, bukan direktori mesin pengembangan. Nama web.xml membedakannya dari report mobile ketika cakupan diperluas.
.venv/bin/python -m pytest tests/web --junitxml=reports/web.xml --tracing=retain-on-failure --screenshot=only-on-failure
Publikasikan dari post always
Tambahkan blok berikut ke tingkat pipeline, bukan di dalam stage Test. Potongan ini bukan Jenkinsfile lengkap; gunakan Jenkinsfile utuh pada tutorial sebelumnya untuk latihan pertama.
Pola artifact harus sesuai dengan output runner. test-results adalah direktori output default plugin pada contoh ini. Jika mengubah --output, ubah pola archiveArtifacts juga.
post {
always {
junit testResults: 'reports/*.xml', allowEmptyResults: false
archiveArtifacts artifacts: 'test-results/**/*', allowEmptyArchive: true
}
}
Triase berdasarkan file yang benar-benar ada
Jika reports/web.xml tidak ada, periksa apakah pytest pernah dimulai, apakah working directory berubah, dan apakah path report salah. Jika XML ada tetapi test count nol, periksa nama file serta pola discovery.
Trace hanya dipertahankan ketika gagal pada konfigurasi contoh. Artifact kosong pada build lulus dapat normal; report kosong tidak normal untuk pipeline ini. Untuk environment berisi data pelanggan, tentukan akses dan retensi artifact sebelum mengaktifkan screenshot.
- Jangan memasukkan || true setelah pytest untuk mengejar build hijau.
- Bersihkan report lama sebelum eksekusi agar hasil tidak tertukar.
- Korelasikan report dengan commit dan identitas build.
Uji jalur gagal dan pulihkan
Pada branch latihan, ubah expected text satu test. Periksa build gagal, kasus gagal muncul pada Test Result, dan file diagnosis tersedia. Pulihkan assertion lalu pastikan build berikutnya lulus.
Percobaan ini menguji apakah pipeline memberi sinyal yang jujur. Itu lebih bermakna daripada hanya sekali melihat build hijau tanpa memeriksa jumlah test.
Pertanyaan yang Sering Ditanyakan
Apakah JUnit berarti test harus ditulis dalam Java?
Tidak. Pytest dapat menghasilkan format XML yang dibaca plugin JUnit Jenkins.
Bolehkah screenshot kosong?
Pada konfigurasi only-on-failure, build lulus tidak perlu menghasilkan screenshot. Report XML tetap diharapkan ada.
Referensi dan bahan latihan
Disusun oleh Kelas Otomesyen. Contoh memakai data latihan; sesuaikan dependency, device, dan locator dengan project.
Unduh starter project (.zip)Unduh petunjuk starter project