bats
Framework do testowania skryptów bash w stylu TDD z asercjami, mockowaniem i raportami CI/CD
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
BATS to system automatycznego testowania dla bash'a 3.2+, który pozwala pisać testy jednostkowe i integracyjne dla skryptów powłoki w strukturalny, powtarzalny sposób. Możesz testować wyjście skryptów, kody wyjścia, operacje na plikach, a także mockować polecenia zewnętrzne takie jak curl, git czy docker. Framework wspiera setup/teardown hooks do przygotowania środowiska testowego, generuje raporty JUnit dla systemów CI/CD i pomaga debugować testy, które się zawieszają lub są niestabilne. Idealny do wdrażania test-driven development w projektach bash'owych.
Jak używać
Przygotuj strukturę projektu z katalogami src/ (skrypty do testowania) i test/ (testy). W katalogu test/ umieść submoduł bats-core oraz biblioteki pomocnicze: bats-support (formatowanie), bats-assert (asercje), bats-file (operacje na plikach) i plik common-setup.bash dla wspólnej logiki setup'u.
Utwórz plik testowy z rozszerzeniem .bats w katalogu test/unit/ lub test/integration/. Na początku załaduj biblioteki pomocnicze w funkcji setup() — na przykład source "${BATS_TEST_DIRNAME}/test_helper/common-setup.bash".
Pisz testy używając bloków @test. Jeśli testujesz wyjście skryptu, użyj run + assert_output. Dla kodów wyjścia użyj run + assert_success lub assert_failure. Do operacji na plikach użyj asercji z bats-file. Dla mockowania poleceń zewnętrznych (curl, git, docker) zapoznaj się z sekcją gotchas.md w dokumentacji.
Uruchom testy poleceniem ./test/bats/bin/bats test/unit/ (lub wskaż katalog z testami integracyjnymi). Framework wyświetli wyniki w formacie TAP i pokaże, które testy przeszły, a które się nie powiodły.
Jeśli test się zawiesza, sprawdź, czy procesy w tle nie blokują deskryptor pliku 3. Jeśli potoki nie działają, opatrz polecenie wrapperem bash -c lub użyj bats_pipe. Jeśli zmienne znikają, nie używaj run do przypisań — zamiast tego przypisz wartość przed blokiem run.
Aby wygenerować raporty JUnit dla CI/CD, użyj flagi --formatter junit w poleceniu bats i przekieruj wyjście do pliku XML, który następnie możesz zintegrować z systemem ciągłej integracji.