Bemästra Linux-kommandoraden och Bash-skriptning · Lektion

Testa Bash-skript med Bats

Skriv automatiserade tester för dina skalskript med testramverket Bats och upptäck regressioner innan de når produktion.

Lektion 4 av 413 steg

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 bats

En 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.bats

Hjä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 1

Snabbkontroll

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 run för att fånga $status och $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
Gratis att börja

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

  1. Felsökning av Bash-skript (set -x, trap)
  2. Felhantering och avslutningsstatus
  3. Bästa praxis för skriptning och lintning
  4. Testa Bash-skript med Bats
← Tillbaka till Bemästra Linux-kommandoraden och Bash-skriptning