Bash-Skripte mit Bats testen
Schreiben Sie mit dem Testframework Bats automatisierte Tests für Ihre Shell-Skripte, um Regressionen zu erkennen, bevor sie die Produktion erreichen.
Bash-Skripte mit Bats testen ist eine kostenlose Linux Command Line & Bash Scripting Mastery-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Linux Command Line & Bash Scripting Mastery-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Linux Command Line & Bash Scripting Mastery-Kurs umfasst insgesamt 4 Lektionen.
Warum Shell-Skripte testen?
Skripte, die unbeaufsichtigt ausgeführt werden (cron, CI), schlagen möglicherweise unbemerkt fehl. Automatisierte Tests überprüfen das Verhalten, damit Änderungen funktionierenden Code nicht beschädigen.
Bats kennenlernen
Bats (Bash Automated Testing System) ist ein TAP-konformes Framework zum Testen von Shell-Code. Die Tests selbst sind Bash-Dateien.
# Install on Debian/Ubuntu
sudo apt-get install batsAufbau einer Testdatei
Eine Bats-Datei endet auf .bats und definiert Tests mit dem Schlüsselwort @test und einer Beschreibung.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Tests ausführen
Führen Sie mit dem Befehl bats eine Datei oder ein ganzes Verzeichnis aus. Ein Test ist erfolgreich, wenn jeder darin enthaltene Befehl mit 0 endet.
bats test/
bats math.batsDer run-Helfer
Der Befehl run führt einen Befehl aus und erfasst seinen Exit-Code in $status sowie seine Ausgabe in $output, ohne den Test abzubrechen.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Ausgaben prüfen
Vergleichen Sie $output mit dem erwarteten Text. Sie können auch bestimmte Zeilen mit ${lines[0]} per Index ansprechen.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Fehlerfälle testen
Gute Tests prüfen auch Fehlerpfade. Prüfen Sie auf einen von 0 verschiedenen $status, wenn ein Befehl fehlschlagen soll.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Setup und Teardown
Definieren Sie die Funktionen setup() und teardown(), die vor und nach JEDEM Test ausgeführt werden, um Testdaten vorzubereiten und aufzuräumen.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Den zu testenden Code laden
Um Funktionen zu testen, laden Sie Ihr Skript, damit seine Funktionen verfügbar sind, und rufen Sie sie anschließend direkt in den Tests auf.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Tests überspringen und zurückstellen
Verwenden Sie skip, um einen Test als noch nicht implementiert oder auf der aktuellen Plattform nicht unterstützt zu markieren, optional mit einer Begründung.
@test "windows-only feature" {
skip "not supported on Linux"
}In CI integrieren
Da bats bei einem Fehlschlag einen von 0 verschiedenen Exit-Code zurückgibt, lässt es sich direkt als Freigabesperre vor dem Deployment in CI-Pipelines integrieren.
# CI step
bats --tap test/ || exit 1Kurzer Test
Testen Sie Ihr Bats-Wissen.
Zusammenfassung
Sie können Bash nun mit Bats testen:
- Tests mit
@testdefinieren; erfolgreich bedeutet, dass alle Befehle mit 0 enden runverwenden, um$statusund$outputzu erfassen- Testdaten mit
setup/teardownvorbereiten - Skripte laden, um Funktionen zu testen, und CI anhand der Ergebnisse sperren
Häufig gestellte Fragen
Ist die Lektion „Bash-Skripte mit Bats testen“ kostenlos?
Ja — der vollständige Text von „Bash-Skripte mit Bats testen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Linux Command Line & Bash Scripting Mastery-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Linux Command Line & Bash Scripting Mastery-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Bash-Skripte mit Bats testen“?
Schreiben Sie mit dem Testframework Bats automatisierte Tests für Ihre Shell-Skripte, um Regressionen zu erkennen, bevor sie die Produktion erreichen. Du übst Linux Command Line & Bash Scripting Mastery mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Linux Command Line & Bash Scripting Mastery zu starten?
Keine Vorkenntnisse erforderlich. Linux Command Line & Bash Scripting Mastery auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Bash-Skripte mit Bats testen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Linux Command Line & Bash Scripting Mastery-Lektion Code schreiben und ausführen?
Ja. Jede Linux Command Line & Bash Scripting Mastery-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bash-Skripte debuggen (set -x, trap)
- Fehlerbehandlung und Exit-Status
- Bewährte Verfahren und Linting für Skripte
- Bash-Skripte mit Bats testen