0Pricing
DevOps Bootcamp · Aula

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 bats

Anatomia 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.bats

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

Verificaçã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 run para capturar $status e $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

  1. Depuração de Scripts Bash (set -x, trap)
  2. Tratamento de Erros e Status de Saída
  3. Boas Práticas de Scripting e Análise Estática
  4. Testar Scripts Bash com Bats
← Voltar para DevOps Bootcamp