Mestring av Linux-kommandolinjen og Bash-skripting · leksjon

Testing av Bash-skript med Bats

Skriv automatiserte tester for shell-skriptene Deres med testrammeverket Bats, slik at De oppdager regresjoner før de når produksjon.

Leksjon 4 av 413 trinn

Testing av Bash-skript med Bats er en gratis leksjon i Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mestring av Linux-kommandolinjen og Bash-skripting, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Hvorfor teste skallskript?

Skript som kjører uten tilsyn, for eksempel via cron eller CI, kan mislykkes uten synlig varsel. Automatiserte tester bekrefter at skriptene oppfører seg riktig, slik at endringer ikke ødelegger fungerende kode.

Introduksjon til Bats

Bats (Bash Automated Testing System) er et TAP-kompatibelt rammeverk for testing av skallkode. Testene er selv Bash-filer.

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

Oppbygningen av en testfil

En Bats-fil slutter på .bats og definerer tester med nøkkelordet @test og en beskrivelse.

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

Kjøre tester

Kjør en fil eller en hel katalog med kommandoen bats. En test består når hver kommando i den avsluttes med 0.

bats test/
bats math.bats

Hjelpekommandoen run

Kommandoen run kjører en kommando og fanger opp avslutningskoden i $status og resultatet i $output, uten å avbryte testen.

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

Kontrollere resultatet

Sammenlign $output med den forventede teksten. De kan også hente bestemte linjer med indeks, for eksempel ${lines[0]}.

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

Teste feilsituasjoner

Gode tester kontrollerer også feilstier. Kontroller at $status er ulik null når en kommando skal mislykkes.

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

Oppsett og opprydding

Definer funksjonene setup() og teardown(), som kjøres før og etter HVER test for å klargjøre og rydde opp i testdata.

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

Laste inn koden som testes

For å teste funksjoner laster De inn skriptet, slik at funksjonene blir tilgjengelige, og kaller dem deretter direkte i testene.

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

Hoppe over og utsette tester

Bruk skip for å markere en test som ennå ikke er implementert eller ikke støttes på den aktuelle plattformen, eventuelt med en begrunnelse.

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

Integrere med CI

Fordi bats returnerer en avslutningskode ulik null ved feil, kan det kobles direkte inn i CI-pipelines som en sperre før utrulling.

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

Hurtigsjekk

Test kunnskapen Deres om Bats.

Oppsummering

De kan nå teste Bash med Bats:

  • Definer tester med @test; testen består når alle kommandoer avsluttes med 0
  • Bruk run for å fange opp $status og $output
  • Klargjør testdata med setup/teardown
  • Last inn skript for å teste funksjoner, og bruk resultatene som sperre i CI
Gratis å komme i gang

Lær deg Bash med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Testing av Bash-skript med Bats» gratis?

Ja – hele teksten i «Testing av Bash-skript med Bats» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Mestring av Linux-kommandolinjen og Bash-skripting-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Hva lærer jeg i «Testing av Bash-skript med Bats»?

Skriv automatiserte tester for shell-skriptene Deres med testrammeverket Bats, slik at De oppdager regresjoner før de når produksjon. Du øver på Mestring av Linux-kommandolinjen og Bash-skripting med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Mestring av Linux-kommandolinjen og Bash-skripting?

Ingen tidligere erfaring er nødvendig. Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Testing av Bash-skript med Bats»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Mestring av Linux-kommandolinjen og Bash-skripting-leksjonen?

Ja. Alle Mestring av Linux-kommandolinjen og Bash-skripting-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Feilsøking av Bash-skript (set -x, trap)
  2. Feilhåndtering og avslutningsstatus
  3. Beste praksis for skripting og linting
  4. Testing av Bash-skript med Bats
← Tilbake til Mestring av Linux-kommandolinjen og Bash-skripting