Cet article fait suite à Tests End-to-End avec Docker parties 1 à 4.

Cette 5 ième partie montre comment utiliser l’application Postman et sa ligne de commande Newman pour exécuter des tests d’intégration de services REST.

Newman docker est utilisé afin d’étendre à l’exécution des tests d’api la technologie Docker par ailleurs déjà utilisée pour les phases précédentes du pipeline.

L’exemple complet est disponible sur github (branche e2e-docker-ansible).

Voir le README pour lancer le test E2E, l’exemple a été testé sous Mac OS avec Docker for Mac .


Le changement par rapport à la partie précédente de l’article est le remplacement du script bash pour tester les services avec curl par l’outil de test Postman

Il faut d’abord créer une collection de test Postman avec l’application, la collection de l’exemple a été créée avec la Mac App.

capture-decran-2016-12-12-a-22-58-35La collection contient un enchaînement de 4 requêtes http

  • recherche personne telle que nom=nom1 (elle existe déjà via l’alimentation batch)
  • post 1 personne telle que nom=nom3
  • post 1 autre personne telle que nom=nom3
  • recherche personnes telles que nom=nom3

A noter également le host de l’url résolu avec la variable {{restapp.host}}  du fichier d’environnement json de Postman.

Détail des assertions de test de l’url get de recherche de personnes

capture-decran-2016-12-12-a-23-12-36

  • vérification status response http 200
  • log et extraction de la réponse json
  • assertions sur les attributs de la réponse json

Pour voir l’exemple complet dans l’application Postman

  • importer la collection au format json
  • importer aussi l’environnement au format json et adapter la valeur du host

Voir tutoriaux du site Postman pour plus de détails.

Une fois la collection et l’environnement Postman créés, il suffit de les exécuter avec la ligne de commande Postman, autrement dit Newman

Le lanceur run.sh des tests E2E est légèrement remanié pour exécuter la collection à l’aide du container Docker newman. (voir ci-dessous #e2e : test postman)

capture-decran-2016-12-12-a-23-35-44

Le pipeline est donc définit comme ceci :

  • build image mysql avec ses schémas
  • package batch & build image docker
  • package restapp & build image docker
  • pre E2E deploy 
    • création structure
    • déploiement config
    • lancement containers
  • pre E2E prepare
    • insérer les données initiales via le batch
  • E2E tests
    • exécution collection postman via docker newman
  • post E2E = stop containers

 

Publicités