Testify pour Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Testify et pourquoi en a-t-on besoin ?

\n\n

Testify est l'une des bibliothèques de test les plus populaires pour le langage Go. Elle étend les capacités du package standard testing, en offrant aux développeurs des utilitaires puissants pour écrire des tests propres, lisibles et maintenables. Testify résolve plusieurs problèmes clés auxquels sont confrontés les développeurs Go :

\n\n
    \n
  • Simplification des assertions : Au lieu de constructions lourdes avec if et t.Errorf, Testify propose des méthodes concises comme assert.Equal.
  • \n
  • Lisibilité des erreurs : En cas d'échec d'un test, Testify affiche des messages détaillés montrant les valeurs attendues et réelles.
  • \n
  • Création de mocks : La prise en charge intégrée des mocks permet d'isoler facilement le code testé des dépendances externes (bases de données, clients HTTP, systèmes de fichiers).
  • \n
  • Regroupement de tests (suite) : Permet de regrouper les tests en ensembles logiques avec des configurations communes (Setup/Teardown).
  • \n
\n\n

Testify est idéal pour les projets de toute taille, des petites utilitaires aux grandes architectures de microservices. C'est la norme de facto pour les tests dans la communauté Go.

\n\n

Installation

\n\n

Testify s'installe comme une dépendance Go standard. Assurez-vous d'avoir Go installé (version 1.16 ou supérieure) et un module initialisé (go mod init).

\n\n
go get github.com/stretchr/testify
\n\n

Après avoir exécuté la commande, Testify sera ajouté à votre fichier go.mod. Vous pouvez maintenant l'importer dans vos fichiers de test.

\n\n

Démarrage rapide

\n\n

Écrivons un test simple pour une fonction qui additionne deux nombres. Créons le fichier math.go :

\n\n
package main\n\nfunc Add(a, b int) int {\n    return a + b\n}
\n\n

Créons maintenant le fichier de test math_test.go :

\n\n
package main\n\nimport (\n    "testing"\n    "github.com/stretchr/testify/assert"\n)\n\nfunc TestAdd(t *testing.T) {\n    result := Add(2, 3)\n    expected := 5\n    assert.Equal(t, expected, result, "2 + 3 doit être égal à 5")\n}
\n\n

Exécutez le test :

\n\n
go test -v
\n\n

Vous verrez un résultat vert. Si vous changez la valeur attendue à 6, le test échouera avec un message d'erreur détaillé.

\n\n

Méthodes et fonctions principales

\n\n

1. assert.Equal

\n

Description : Vérifie que deux valeurs sont égales. Utilise reflect.DeepEqual pour comparer les types complexes (slices, structures, maps).

\n

Paramètres :

\n
    \n
  • t — objet *testing.T
  • \n
  • expected — valeur attendue
  • \n
  • actual — valeur réelle
  • \n
  • msg (optionnel) — message d'erreur
  • \n
\n

Exemple :

\n
func TestEqual(t *testing.T) {\n    assert.Equal(t, 10, 5+5, "5+5 doit être 10")\n    assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})\n}
\n\n

2. assert.NotEqual

\n

Description : L'opposé de Equal. Vérifie que deux valeurs NE sont PAS égales.

\n

Paramètres : Similaires à Equal.

\n

Exemple :

\n
func TestNotEqual(t *testing.T) {\n    assert.NotEqual(t, 10, 5+4, "5+4 n'est pas égal à 10")\n}
\n\n

3. assert.True / assert.False

\n

Description : Vérifie qu'une expression est vraie (True) ou fausse (False).

\n

Paramètres :

\n
    \n
  • t — objet *testing.T
  • \n
  • condition — expression booléenne
  • \n
  • msg (optionnel) — message d'erreur
  • \n
\n

Exemple :

\n
func TestTrueFalse(t *testing.T) {\n    assert.True(t, 5 > 3, "5                    

Recommendations