0Pricing
DevOps Bootcamp · Leçon

Tester des scripts Bash avec Bats

Écrivez des tests automatisés pour vos scripts shell avec le framework de test Bats afin de détecter les régressions avant leur mise en production.

Tester des scripts Bash avec Bats est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.

Pourquoi tester les scripts shell ?

Les scripts qui s’exécutent sans intervention (cron, CI) échouent silencieusement. Les tests automatisés vérifient le comportement afin que les modifications ne cassent pas le code fonctionnel.

Présentation de Bats

Bats (Bash Automated Testing System) est un cadre de test conforme à TAP pour tester du code shell. Les tests sont eux-mêmes des fichiers Bash.

# Install on Debian/Ubuntu
sudo apt-get install bats

Anatomie d’un fichier de test

Un fichier Bats se termine par .bats et définit des tests avec le mot-clé @test et une description.

@test "addition works" {
  result=$(( 2 + 2 ))
  [ "$result" -eq 4 ]
}

Exécuter des tests

Exécutez un fichier ou un répertoire entier avec la commande bats. Un test réussit lorsque chaque commande qu’il contient se termine par le code 0.

bats test/
bats math.bats

L’assistant run

La commande run exécute une commande et capture son code de sortie dans $status ainsi que sa sortie dans $output, sans interrompre le test.

@test "ls succeeds" {
  run ls /tmp
  [ "$status" -eq 0 ]
}

Vérifier la sortie

Comparez $output au texte attendu. Vous pouvez également indexer des lignes précises avec ${lines[0]}.

@test "echo prints hello" {
  run echo hello
  [ "$output" = "hello" ]
}

Tester les cas d’échec

De bons tests vérifient également les chemins d’erreur. Vérifiez que $status est différent de zéro lorsqu’une commande doit échouer.

@test "missing file fails" {
  run cat /no/such/file
  [ "$status" -ne 0 ]
}

Préparation et nettoyage

Définissez les fonctions setup() et teardown(), exécutées avant et après EACH test, afin de préparer et de nettoyer les éléments de test.

setup() {
  TMP=$(mktemp -d)
}
teardown() {
  rm -rf "$TMP"
}

Charger le code testé

Pour tester des fonctions, chargez votre script afin que ses fonctions soient disponibles, puis appelez-les directement dans les tests.

setup() {
  source ./lib/utils.sh
}
@test "slugify lowercases" {
  run slugify "Hello World"
  [ "$output" = "hello-world" ]
}

Ignorer et mettre des tests en attente

Utilisez skip pour indiquer qu’un test n’est pas encore implémenté ou qu’il n’est pas pris en charge sur la plateforme actuelle, en fournissant éventuellement une raison.

@test "windows-only feature" {
  skip "not supported on Linux"
}

Intégrer la CI

Comme bats renvoie un code de sortie différent de zéro en cas d’échec, il s’intègre directement aux chaînes CI comme barrière avant le déploiement.

# CI step
bats --tap test/ || exit 1

Vérification rapide

Vérifiez vos connaissances sur Bats.

Récapitulatif

Vous pouvez maintenant tester Bash avec Bats :

  • Définissez des tests avec @test ; la réussite signifie que toutes les commandes se terminent par le code 0
  • Utilisez run pour capturer $status et $output
  • Préparez les éléments de test avec setup/teardown
  • Chargez les scripts pour tester les fonctions et conditionnez la CI aux résultats

Questions Fréquemment Posées

La leçon « Tester des scripts Bash avec Bats » est-elle gratuite ?

Oui — le texte complet de « Tester des scripts Bash avec Bats » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Tester des scripts Bash avec Bats » ?

Écrivez des tests automatisés pour vos scripts shell avec le framework de test Bats afin de détecter les régressions avant leur mise en production. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Tester des scripts Bash avec Bats » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Débogage des scripts Bash (set -x, trap)
  2. Gestion des erreurs et statut de sortie
  3. Bonnes pratiques de script et analyse statique
  4. Tester des scripts Bash avec Bats
← Retour à DevOps Bootcamp