Testar Scripts Bash com Bats
Escreva testes automatizados para os seus scripts de shell usando a estrutura de testes Bats, detetando regressões antes de chegarem à produção.
Testar Scripts Bash com Bats é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Por que testar scripts do shell?
Scripts executados sem supervisão (cron, CI) falham silenciosamente. Testes automatizados verificam o comportamento para que as alterações não quebrem o código funcional.
Apresentando o Bats
Bats (Sistema de Testes Automatizados do Bash) é uma estrutura compatível com TAP para testar código do shell. Os testes são, por sua vez, arquivos Bash.
# Install on Debian/Ubuntu
sudo apt-get install batsAnatomia de um arquivo de teste
Um arquivo Bats termina em .bats e define testes com a palavra-chave @test e uma descrição.
@test "addition works" {
result=$(( 2 + 2 ))
[ "$result" -eq 4 ]
}Executando testes
Execute um arquivo ou um diretório inteiro com o comando bats. Um teste é aprovado quando todos os comandos internos terminam com o código 0.
bats test/
bats math.batsO auxiliar run
O comando run executa um comando e captura seu código de saída em $status e sua saída em $output, sem interromper o teste.
@test "ls succeeds" {
run ls /tmp
[ "$status" -eq 0 ]
}Verificando a saída
Compare $output com o texto esperado. Você também pode indexar linhas específicas com ${lines[0]}.
@test "echo prints hello" {
run echo hello
[ "$output" = "hello" ]
}Testando casos de falha
Bons testes também verificam os caminhos de erro. Afirme um $status diferente de zero quando um comando deveria falhar.
@test "missing file fails" {
run cat /no/such/file
[ "$status" -ne 0 ]
}Preparação e limpeza
Defina as funções setup() e teardown(), executadas antes e depois de CADA teste, para preparar e limpar os recursos de teste.
setup() {
TMP=$(mktemp -d)
}
teardown() {
rm -rf "$TMP"
}Carregando o código em teste
Para testar funções, carregue seu script para disponibilizar as funções e, em seguida, chame-as diretamente nos testes.
setup() {
source ./lib/utils.sh
}
@test "slugify lowercases" {
run slugify "Hello World"
[ "$output" = "hello-world" ]
}Ignorando e adiando testes
Use skip para marcar um teste como ainda não implementado ou incompatível com a plataforma atual, incluindo opcionalmente um motivo.
@test "windows-only feature" {
skip "not supported on Linux"
}Integrando com CI
Como bats retorna um código de saída diferente de zero em caso de falha, ele se integra diretamente a pipelines de CI como uma etapa de bloqueio antes da implantação.
# CI step
bats --tap test/ || exit 1Verificação rápida
Teste seus conhecimentos sobre Bats.
Recapitulação
Agora você pode testar Bash com Bats:
- Defina testes com
@test; a aprovação significa que todos os comandos terminam com o código 0 - Use
runpara capturar$statuse$output - Prepare os recursos de teste com
setup/teardown - Carregue scripts para testar funções e bloquear o CI com base nos resultados
Perguntas Frequentes
A aula “Testar Scripts Bash com Bats” é grátis?
Sim — o texto completo de “Testar Scripts Bash com Bats” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Testar Scripts Bash com Bats”?
Escreva testes automatizados para os seus scripts de shell usando a estrutura de testes Bats, detetando regressões antes de chegarem à produção. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Testar Scripts Bash com Bats”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Depuração de Scripts Bash (set -x, trap)
- Tratamento de Erros e Status de Saída
- Boas Práticas de Scripting e Análise Estática
- Testar Scripts Bash com Bats