0Pricing
DevOps Bootcamp · Lezione

Testare gli script Bash con Bats

Scriva test automatizzati per gli script della shell usando il framework di testing Bats, così da individuare le regressioni prima che arrivino in produzione.

Testare gli script Bash con Bats è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Perché testare gli script della shell?

Gli script eseguiti senza supervisione (cron, CI) possono fallire senza segnalazioni. I test automatizzati verificano il comportamento, così le modifiche non compromettono il codice funzionante.

Introduzione a Bats

Bats (Bash Automated Testing System) è un framework conforme a TAP per testare il codice della shell. I test sono a loro volta file Bash.

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

Anatomia di un file di test

Un file Bats termina con .bats e definisce i test con la parola chiave @test e una descrizione.

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

Eseguire i test

Esegua un file o un'intera directory con il comando bats. Un test ha esito positivo quando ogni comando al suo interno termina con codice 0.

bats test/
bats math.bats

L'helper run

Il comando run esegue un comando e ne cattura il codice di uscita in $status e l'output in $output, senza interrompere il test.

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

Verificare l'output

Confronti $output con il testo previsto. Può anche indicizzare righe specifiche con ${lines[0]}.

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

Testare i casi di errore

I test efficaci verificano anche i percorsi di errore. Verifichi che $status sia diverso da zero quando un comando dovrebbe fallire.

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

Configurazione e pulizia

Definisca le funzioni setup() e teardown(), eseguite prima e dopo OGNI test, per preparare e pulire i dati di test.

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

Caricare il codice da testare

Per testare le funzioni, carichi lo script in modo che le sue funzioni siano disponibili, quindi le chiami direttamente all'interno dei test.

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

Saltare i test e contrassegnarli come in sospeso

Usi skip per contrassegnare un test come non ancora implementato o non supportato sulla piattaforma corrente, specificando facoltativamente il motivo.

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

Integrare con la CI

Poiché bats restituisce un codice di uscita diverso da zero in caso di errore, si integra direttamente nelle pipeline CI come controllo prima della distribuzione.

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

Verifica rapida

Verifichi la Sua conoscenza di Bats.

Riepilogo

Ora sa come testare Bash con Bats:

  • Definire i test con @test; il test passa se tutti i comandi terminano con codice 0
  • Usare run per catturare $status e $output
  • Preparare i dati di test con setup/teardown
  • Caricare gli script per testare le funzioni e usare i risultati come controllo nella CI

Domande Frequenti

La lezione «Testare gli script Bash con Bats» è gratuita?

Sì — il testo completo di «Testare gli script Bash con Bats» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Testare gli script Bash con Bats»?

Scriva test automatizzati per gli script della shell usando il framework di testing Bats, così da individuare le regressioni prima che arrivino in produzione. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Testare gli script Bash con Bats»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Debug degli script Bash (set -x, trap)
  2. Gestione degli errori e stato di uscita
  3. Buone pratiche di scripting e linting
  4. Testare gli script Bash con Bats
← Torna a DevOps Bootcamp