Bash Betiklerini Bats ile Sınama
Üretim ortamına ulaşmadan önce gerilemeleri yakalamak için kabuk betikleriniz için Bats sınama çatısını kullanarak otomatik sınamalar yazın.
Bash Betiklerini Bats ile Sınama, CoddyKit'te ücretsiz bir Linux Command Line & Bash Scripting Mastery dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Linux Command Line & Bash Scripting Mastery öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Linux Command Line & Bash Scripting Mastery kursu toplamda 4 dersten oluşur.
Kabuk Betikleri Neden Sınanır?
Denetimsiz çalışan betikler (cron, CI) sessizce başarısız olabilir. Otomatik testler, değişikliklerin çalışan kodu bozmamasını sağlamak için davranışı doğrular.
Bats'e Giriş
Bats (Bash Otomatik Sınama Sistemi), kabuk kodunu sınamak için TAP uyumlu bir çerçevedir. Testlerin kendisi Bash dosyalarıdır.
# Install on Debian/Ubuntu
sudo apt-get install batsBir Test Dosyasının Yapısı
Bir Bats dosyası .bats ile biter ve testleri @test anahtar sözcüğü ile bir açıklama kullanarak tanımlar.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Testleri Çalıştırma
bats komutuyla bir dosyayı veya dizinin tamamını çalıştırın. İçindeki her komut 0 durumuyla sonlandığında test başarılı olur.
bats test/
bats math.batsrun Yardımcısı
run komutu bir komutu çalıştırır ve testi durdurmadan çıkış kodunu $status içinde, çıktıyı ise $output içinde yakalar.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Çıktı Üzerinde Doğrulama
$output değerini beklenen metinle karşılaştırın. Ayrıca ${lines[0]} ile belirli satırlara dizin üzerinden erişebilirsiniz.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Başarısızlık Durumlarını Sınama
İyi testler hata yollarını da denetler. Bir komutun başarısız olması gerektiğinde sıfır olmayan bir $status değerini doğrulayın.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Kurulum ve Temizleme
Test verilerini hazırlamak ve temizlemek için her EACH testten önce ve sonra çalışan setup() ve teardown() işlevlerini tanımlayın.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Sınanan Kodu Kaynaklama
İşlevleri sınamak için betiğinizi kaynaklayarak işlevlerini kullanılabilir hâle getirin, ardından bunları doğrudan testlerin içinde çağırın.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Testleri Atlamak ve Beklemeye Almak
Bir testi henüz uygulanmamış veya mevcut platformda desteklenmiyor olarak işaretlemek için isteğe bağlı bir nedenle birlikte skip kullanın.
@test "windows-only feature" {
skip "not supported on Linux"
}CI ile Entegrasyon
bats başarısızlık durumunda sıfır olmayan bir çıkış kodu döndürdüğü için dağıtımdan önce bir kontrol noktası olarak CI işlem hatlarına doğrudan eklenebilir.
# CI step
bats --tap test/ || exit 1Hızlı Kontrol
Bats bilginizi sınayın.
Özet
Artık Bash'i Bats ile sınayabilirsiniz:
- Testleri
@testile tanımlayın; tüm komutların 0 ile sonlanması başarı demektir $statusve$outputdeğerlerini yakalamak içinrunkullanın- Test verilerini
setup/teardownile hazırlayın - İşlevleri sınamak için betikleri kaynaklayın ve sonuçlara göre CI'yi durdurun veya sürdürüün
Sıkça Sorulan Sorular
“Bash Betiklerini Bats ile Sınama” dersi ücretsiz mi?
Evet — “Bash Betiklerini Bats ile Sınama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Linux Command Line & Bash Scripting Mastery kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Linux Command Line & Bash Scripting Mastery kursu toplamda 4 dersten oluşur.
“Bash Betiklerini Bats ile Sınama” dersinde ne öğreneceğim?
Üretim ortamına ulaşmadan önce gerilemeleri yakalamak için kabuk betikleriniz için Bats sınama çatısını kullanarak otomatik sınamalar yazın. Linux Command Line & Bash Scripting Mastery ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Linux Command Line & Bash Scripting Mastery öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Linux Command Line & Bash Scripting Mastery, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Bash Betiklerini Bats ile Sınama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Linux Command Line & Bash Scripting Mastery dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Linux Command Line & Bash Scripting Mastery dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bash Betiklerinde Hata Ayıklama (set -x, trap)
- Hata İşleme ve Çıkış Durumu
- Betik Yazımında En İyi Uygulamalar ve Lint Denetimi
- Bash Betiklerini Bats ile Sınama