Test af Bash-scripts med Bats
Skriv automatiserede tests til dine shell-scripts med testframeworket Bats, så du opdager regressioner, før de når produktionen.
Test af Bash-scripts med Bats er en gratis Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Linux-kommandolinjen og Bash-scripting på ekspertniveau, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Hvorfor teste skalscripts?
Scripts, der kører uden opsyn (cron, CI), kan mislykkes uden nogen besked. Automatiske test kontrollerer funktionsmåden, så ændringer ikke ødelægger kode, der virker.
Introduktion til Bats
Bats (Bash Automated Testing System) er et TAP-kompatibelt framework til test af skalkode. Testene er selv Bash-filer.
# Install on Debian/Ubuntu
sudo apt-get install batsEn testfils opbygning
En Bats-fil ender på .bats og definerer test med nøgleordet @test og en beskrivelse.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Kør test
Kør en fil eller en hel mappe med kommandoen bats. En test består, når alle kommandoer i den afsluttes med 0.
bats test/
bats math.batsHjælpekommandoen run
Kommandoen run kører en kommando og gemmer dens afslutningskode i $status og outputtet i $output uden at afbryde testen.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Kontrollér output
Sammenlign $output med den forventede tekst. Du kan også indeksere bestemte linjer med ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Test fejlsituationer
Gode test kontrollerer også fejlstier. Kontrollér, at $status er forskellig fra nul, når en kommando skal mislykkes.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Opsætning og oprydning
Definér funktionerne setup() og teardown(), som kører før og efter HVER test for at forberede og rydde op i testdata.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Indlæs koden under test
Hvis du vil teste funktioner, skal du indlæse dit script, så dets funktioner bliver tilgængelige, og derefter kalde dem direkte i testene.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Spring test over, eller markér den som afventende
Brug skip til at markere en test som endnu ikke implementeret eller som ikke understøttet på den aktuelle platform. Du kan angive en valgfri årsag.
@test "windows-only feature" {
skip "not supported on Linux"
}Integrér med CI
Da bats returnerer en afslutningskode forskellig fra nul ved fejl, kan det integreres direkte i CI-arbejdsgange som en kontrol før udrulning.
# CI step
bats --tap test/ || exit 1Hurtig kontrol
Test din viden om Bats.
Opsamling
Du kan nu teste Bash med Bats:
- Definér test med
@test; testen består, når alle kommandoer afsluttes med 0 - Brug
runtil at gemme$statusog$output - Forbered testdata med
setup/teardown - Indlæs scripts for at teste funktioner, og brug resultaterne som kontrol i CI
Lær Bash med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 22
- Lektioner
- 88
Ofte stillede spørgsmål
Er lektionen “Test af Bash-scripts med Bats” gratis?
Ja — hele teksten til “Test af Bash-scripts med Bats” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset, skal du opgradere til CoddyKit PRO. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Test af Bash-scripts med Bats”?
Skriv automatiserede tests til dine shell-scripts med testframeworket Bats, så du opdager regressioner, før de når produktionen. Du øver dig i Linux-kommandolinjen og Bash-scripting på ekspertniveau med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Linux-kommandolinjen og Bash-scripting på ekspertniveau?
Der kræves ingen tidligere erfaring. Linux-kommandolinjen og Bash-scripting på ekspertniveau på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Test af Bash-scripts med Bats”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion?
Ja. Alle Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Fejlfinding i Bash-scripts (set -x, trap)
- Fejlhåndtering og afslutningsstatus
- Bedste praksis for scripting og linting
- Test af Bash-scripts med Bats