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 QA

Panduan 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

  1. Langkah 1

    Siapkan prasyarat

    Cek environment dan file latihan sebelum menjalankan perintah.

  2. Langkah 2

    Jalankan contoh minimal

    Mulai dari satu test agar penyebab kegagalan mudah ditelusuri.

  3. Langkah 3

    Baca hasil dan coba kegagalan

    Ubah ekspektasi untuk memastikan assertion benar-benar bekerja.

  4. 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.

Perintah pytest · bash
.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.

Potongan Jenkinsfile · groovy
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

Lanjutkan ke Panduan Terkait

Lihat kelas Jenkins CI/CD for QA