Toolverse
Wszystkie skille

bats

autor: OleksandrKucherenko

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

Szybkie info

Kategoria
Testowanie
Wyświetlenia
87

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ć

  1. 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.

  2. 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".

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Podobne skille