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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Linux Command Line & Bash Scripting Mastery 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 batsAnatomia 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.batsL'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 1Verifica 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
runper catturare$statuse$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 Linux Command Line & Bash Scripting Mastery, passa a CoddyKit PRO. Il corso Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?
Non è richiesta alcuna esperienza precedente. Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?
Sì. Ogni lezione Linux Command Line & Bash Scripting Mastery 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
- Debug degli script Bash (set -x, trap)
- Gestione degli errori e stato di uscita
- Buone pratiche di scripting e linting
- Testare gli script Bash con Bats