Kem Intensif DevOps · Pelajaran

Menguji Skrip Bash dengan Bats

Tulis ujian automatik untuk skrip shell anda menggunakan rangka kerja pengujian Bats bagi mengesan regresi sebelum ia mencapai persekitaran pengeluaran.

Pelajaran 4 daripada 413 langkah

Menguji Skrip Bash dengan Bats ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Mengapa Menguji Skrip Shell?

Skrip yang berjalan tanpa pengawasan (cron, CI) boleh gagal secara senyap. Ujian automatik mengesahkan tingkah laku supaya perubahan tidak merosakkan kod yang berfungsi.

Memperkenalkan Bats

Bats (Bash Automated Testing System) ialah rangka kerja yang mematuhi TAP untuk menguji kod shell. Ujian itu sendiri ialah fail Bash.

# Install on Debian/Ubuntu
sudo apt-get install bats

Anatomi Fail Ujian

Fail Bats berakhir dengan .bats dan mentakrifkan ujian menggunakan kata kunci @test serta perihalan.

@test "addition works" {
  result=$(( 2 + 2 ))
  [ "$result" -eq 4 ]
}

Menjalankan Ujian

Jalankan satu fail atau seluruh direktori dengan arahan bats. Ujian lulus apabila setiap arahan di dalamnya keluar dengan kod 0.

bats test/
bats math.bats

Pembantu run

Arahan run melaksanakan arahan dan menangkap kod keluarnya dalam $status serta output dalam $output tanpa menghentikan ujian.

@test "ls succeeds" {
  run ls /tmp
  [ "$status" -eq 0 ]
}

Membuat Pernyataan tentang Output

Bandingkan $output dengan teks yang dijangka. Anda juga boleh mengindeks baris tertentu dengan ${lines[0]}.

@test "echo prints hello" {
  run echo hello
  [ "$output" = "hello" ]
}

Menguji Kes Kegagalan

Ujian yang baik turut memeriksa laluan ralat. Tegaskan bahawa $status bukan sifar apabila arahan sepatutnya gagal.

@test "missing file fails" {
  run cat /no/such/file
  [ "$status" -ne 0 ]
}

Persediaan dan Pembersihan

Takrifkan fungsi setup() dan teardown() yang dijalankan sebelum dan selepas EACH ujian untuk menyediakan serta membersihkan lekapan.

setup() {
  TMP=$(mktemp -d)
}
teardown() {
  rm -rf "$TMP"
}

Memuatkan Kod yang Diuji

Untuk menguji fungsi, muatkan skrip anda supaya fungsinya tersedia, kemudian panggil fungsi tersebut secara terus dalam ujian.

setup() {
  source ./lib/utils.sh
}
@test "slugify lowercases" {
  run slugify "Hello World"
  [ "$output" = "hello-world" ]
}

Melangkau dan Menangguhkan Ujian

Gunakan skip untuk menandakan ujian sebagai belum dilaksanakan atau tidak disokong pada platform semasa, dengan sebab pilihan.

@test "windows-only feature" {
  skip "not supported on Linux"
}

Mengintegrasikan dengan CI

Oleh sebab bats mengembalikan kod keluar bukan sifar apabila gagal, ia boleh terus disepadukan ke dalam saluran paip CI sebagai pemeriksaan sebelum penggunaan.

# CI step
bats --tap test/ || exit 1

Semakan Pantas

Uji pengetahuan anda tentang Bats.

Ulang Kaji

Anda kini boleh menguji Bash dengan Bats:

  • Takrifkan ujian dengan @test; lulus bermaksud semua arahan keluar dengan kod 0
  • Gunakan run untuk menangkap $status dan $output
  • Sediakan lekapan dengan setup/teardown
  • Muatkan skrip untuk menguji fungsi dan jadikan keputusan sebagai pemeriksaan CI
Percuma untuk bermula

Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
142
Pelajaran
568

Soalan Lazim

Adakah pelajaran “Menguji Skrip Bash dengan Bats” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Menguji Skrip Bash dengan Bats”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menguji Skrip Bash dengan Bats”?

Tulis ujian automatik untuk skrip shell anda menggunakan rangka kerja pengujian Bats bagi mengesan regresi sebelum ia mencapai persekitaran pengeluaran. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Menguji Skrip Bash dengan Bats” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?

Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penyahpepijatan Skrip Bash (set -x, trap)
  2. Pengendalian Ralat dan Status Keluar
  3. Amalan Terbaik Penskripan dan Linting
  4. Menguji Skrip Bash dengan Bats
← Kembali ke Kem Intensif DevOps