Testowanie skryptów Bash za pomocą Bats
Pisz automatyczne testy skryptów powłoki za pomocą frameworka testowego Bats, aby wykrywać regresje, zanim trafią do środowiska produkcyjnego.
Testowanie skryptów Bash za pomocą Bats to bezpłatna lekcja Linux Command Line & Bash Scripting Mastery na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Linux Command Line & Bash Scripting Mastery, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Linux Command Line & Bash Scripting Mastery zawiera 4 lekcji w sumie.
Dlaczego testować skrypty powłoki?
Skrypty uruchamiane bez nadzoru (cron, CI) mogą kończyć się niepowodzeniem bez żadnego komunikatu. Testy automatyczne weryfikują działanie, dzięki czemu zmiany nie psują działającego kodu.
Wprowadzenie do Bats
Bats (Bash Automated Testing System) to zgodny ze standardem TAP framework do testowania kodu powłoki. Testy są plikami Bash.
# Install on Debian/Ubuntu
sudo apt-get install batsBudowa pliku testowego
Plik Bats ma rozszerzenie .bats i definiuje testy za pomocą słowa kluczowego @test oraz opisu.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Uruchamianie testów
Plik lub cały katalog można uruchomić za pomocą polecenia bats. Test przechodzi, gdy każde zawarte w nim polecenie kończy się kodem 0.
bats test/
bats math.batsPomocnik run
Polecenie run wykonuje polecenie i zapisuje jego kod wyjścia w $status, a dane wyjściowe w $output, nie przerywając testu.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Sprawdzanie danych wyjściowych
Proszę porównać $output z oczekiwanym tekstem. Można również odwoływać się do konkretnych wierszy za pomocą ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Testowanie przypadków błędów
Dobre testy sprawdzają również ścieżki błędów. Gdy polecenie powinno zakończyć się niepowodzeniem, należy sprawdzić, czy $status jest różny od zera.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Konfiguracja i sprzątanie
Proszę zdefiniować funkcje setup() i teardown(), które uruchamiają się przed każdym testem i po nim, aby przygotować oraz posprzątać dane testowe.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Wczytywanie testowanego kodu
Aby testować funkcje, proszę wczytać skrypt, tak aby jego funkcje były dostępne, a następnie wywoływać je bezpośrednio w testach.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Pomijanie testów i testy oczekujące
Proszę użyć skip, aby oznaczyć test jako jeszcze niezaimplementowany lub nieobsługiwany na bieżącej platformie; można też podać opcjonalny powód.
@test "windows-only feature" {
skip "not supported on Linux"
}Integracja z CI
Ponieważ bats zwraca niezerowy kod wyjścia w przypadku niepowodzenia, można je bezpośrednio włączyć do potoków CI jako bramkę przed wdrożeniem.
# CI step
bats --tap test/ || exit 1Szybkie sprawdzenie
Proszę sprawdzić swoją wiedzę na temat Bats.
Podsumowanie
Potrafi już Pan/Pani testować Bash za pomocą Bats:
- Definiowanie testów za pomocą
@test; test przechodzi, gdy wszystkie polecenia kończą się kodem 0 - Używanie
rundo przechwytywania$statusi$output - Przygotowywanie danych testowych za pomocą
setup/teardown - Wczytywanie skryptów w celu testowania funkcji i uzależnianie CI od wyników
Często zadawane pytania
Czy lekcja „Testowanie skryptów Bash za pomocą Bats” jest bezpłatna?
Tak — pełny tekst „Testowanie skryptów Bash za pomocą Bats” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Linux Command Line & Bash Scripting Mastery, przejdź na CoddyKit PRO. Kurs Linux Command Line & Bash Scripting Mastery zawiera 4 lekcji w sumie.
Co nauczysz się w „Testowanie skryptów Bash za pomocą Bats”?
Pisz automatyczne testy skryptów powłoki za pomocą frameworka testowego Bats, aby wykrywać regresje, zanim trafią do środowiska produkcyjnego. Ćwiczysz Linux Command Line & Bash Scripting Mastery z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Linux Command Line & Bash Scripting Mastery?
Nie wymagamy żadnego doświadczenia. Linux Command Line & Bash Scripting Mastery w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Testowanie skryptów Bash za pomocą Bats”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Linux Command Line & Bash Scripting Mastery?
Tak. Każda lekcja Linux Command Line & Bash Scripting Mastery zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Debugowanie skryptów Bash (set -x, trap)
- Obsługa błędów i status wyjścia
- Najlepsze praktyki skryptowania i linting
- Testowanie skryptów Bash za pomocą Bats