Testa Bash-skript med Bats
Skriv automatiserade tester för dina skalskript med testramverket Bats och upptäck regressioner innan de når produktion.
Testa Bash-skript med Bats är en gratis lektion i Bemästra Linux-kommandoraden och Bash-skriptning på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Bemästra Linux-kommandoraden och Bash-skriptning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bemästra Linux-kommandoraden och Bash-skriptning innehåller totalt 4 lektioner.
Varför testa skalskript?
Skript som körs utan övervakning, till exempel via cron eller CI, kan misslyckas utan att det märks. Automatiserade tester verifierar beteendet så att ändringar inte förstör fungerande kod.
Introduktion till Bats
Bats (Bash Automated Testing System) är ett TAP-kompatibelt ramverk för att testa skal kod. Testerna är själva Bash-filer.
# Install on Debian/Ubuntu
sudo apt-get install batsEn testfils uppbyggnad
En Bats-fil slutar på .bats och definierar tester med nyckelordet @test och en beskrivning.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Köra tester
Kör en fil eller en hel katalog med kommandot bats. Ett test lyckas när varje kommando i det avslutas med 0.
bats test/
bats math.batsHjälpkommandot run
Kommandot run kör ett kommando och fångar dess slutstatus i $status och resultatet i $output utan att avbryta testet.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Kontrollera utdata
Jämför $output med den förväntade texten. Du kan också indexera enskilda rader med ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Testa felutfall
Bra tester kontrollerar även felvägar. Kontrollera att $status är skilt från noll när ett kommando förväntas misslyckas.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Förberedelse och städning
Definiera funktionerna setup() och teardown(), som körs före respektive efter VARJE test för att förbereda och städa testdata.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Läsa in koden som testas
För att testa funktioner läser du in ditt skript så att funktionerna blir tillgängliga och anropar dem sedan direkt i testerna.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Hoppa över och avvakta med tester
Använd skip för att markera ett test som ännu inte är implementerat eller inte stöds på den aktuella plattformen, med en valfri orsak.
@test "windows-only feature" {
skip "not supported on Linux"
}Integrera med CI
Eftersom bats returnerar en slutstatus skild från noll vid fel kan det direkt integreras i CI-pipelines som en spärr före driftsättning.
# CI step
bats --tap test/ || exit 1Snabbkontroll
Testa dina kunskaper om Bats.
Sammanfattning
Du kan nu testa Bash med Bats:
- Definiera tester med
@test; testet lyckas om alla kommandon avslutas med 0 - Använd
runför att fånga$statusoch$output - Förbered testdata med
setup/teardown - Läs in skript för att testa funktioner och låt CI avgöra om resultatet godkänns
Lär dig Bash med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 22
- Lektioner
- 88
Vanliga frågor
Är lektionen ”Testa Bash-skript med Bats” gratis?
Ja – hela texten till ”Testa Bash-skript med Bats” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Bemästra Linux-kommandoraden och Bash-skriptning, kan Ni uppgradera till CoddyKit PRO. Kursen i Bemästra Linux-kommandoraden och Bash-skriptning innehåller totalt 4 lektioner.
Vad lär jag mig i ”Testa Bash-skript med Bats”?
Skriv automatiserade tester för dina skalskript med testramverket Bats och upptäck regressioner innan de når produktion. Ni övar på Bemästra Linux-kommandoraden och Bash-skriptning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Bemästra Linux-kommandoraden och Bash-skriptning?
Du behöver inga förkunskaper. Utbildningen i Bemästra Linux-kommandoraden och Bash-skriptning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Testa Bash-skript med Bats”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Bemästra Linux-kommandoraden och Bash-skriptning-lektionen?
Ja. Varje Bemästra Linux-kommandoraden och Bash-skriptning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Felsökning av Bash-skript (set -x, trap)
- Felhantering och avslutningsstatus
- Bästa praxis för skriptning och lintning
- Testa Bash-skript med Bats