Traduction de Shashi Kumar Raja
Donc, disons que vous voulez faire de l'automatisation API, mais chaque fois que vous tapez le meilleur outil d'automatisation api dans la barre de recherche Google, vous voyez tellement de liens vers les 10 meilleurs outils que vous vous trompez et décidez que vous le ferez certainement demain

Commençons par comprendre ce dont nous avons besoin si nous voulons mettre en place (espérons-le demain) une plate-forme d'automatisation d'API . Tenez cette pensée pendant une seconde ... J'ai dit, arrêtez de penser ... Je sais que votre patron n'attribue pas un centime pour les outils payés . Ecoute, je lis dans ton esprit, ne pense pas à haute voix

Les outils payants doivent être suspendus, pas exécutés :)
1. où diable dois-je commencer à écrire des tests?
Vous aurez besoin de quelque chose qui vous fournira des ensembles de règles et de directives pour la rédaction des tests, et vous permettra également de le faire en vous donnant accès à plusieurs outils et techniques. J'entends une cloche sonner, non !!! Eh bien, je sais ce que fera une cloche.
Avez-vous déjà entendu parler de TESTNG , JUNIT , MOCHA , PYTEST , ROBOT !? Oui, ce sont tous des environnements d'automatisation de test.
Vous devez trouver le bon environnement de test en fonction de vos besoins: quelle pile technologique existante votre entreprise utilise-t-elle? Quelle automatisation voulez-vous faire? Quelle langue vous convient le mieux, etc. Vous trouverez un environnement d'automatisation dans les langages les plus populaires qui vous permettra d'écrire des tests unitaires, fonctionnels et autres types de tests d'API.
Pour en savoir plus sur l'environnement de test, reportez-vous à la partie 2 de la série, où j'ai présenté Mocha et Pytest en détail .
2. Comment vais-je faire des appels d'API dans un environnement de test?
La plupart de ces plates-formes prennent en charge les appels d'API, y compris la bibliothèque de requêtes HTTP , car les API REST utilisent le protocole HTTP pour la communication.
Certains frameworks, tels que mocha , vous donnent la liberté d'utiliser la bibliothèque de requêtes HTTP de votre choix, comme superagent .
<code class = "lang-JS"> demande
.post ('/ api / pet')
.send ({nom: 'Manny', espèce: 'cat'}) // envoie un corps de message JSON
.set ('X-API-Key', 'foobar')
.set ('accepter', 'json')
.end ((err, res) => {
// L'appel de la fonction de fin enverra la requête
});
</code>
Ils vous offrent un support facile pour GET, PUT, POST, DELETE et toutes les autres méthodes. Vous pouvez passer les en-têtes, le cache, les paramètres de requête, vous l'avez appelé - vous l'avez compris
3. Cool, mais certaines de mes API donnent JSON et d'autres donnent XML en réponse, comment puis-je gérer cela?
La plupart de ces bibliothèques de requêtes HTTP vous permettent d'envoyer et de recevoir des données au format JSON, XML, CSV, texte, image, données de formulaire, données codées avec plusieurs normes d'autorisation prises en charge.
Ils vous permettent également de traiter le code d'état de réponse HTTP et de vérifier si nous avons reçu le code d'état de réponse requis ou non.
- Codes de réponse informationnelle (1xx)
100 - Continuer
101 - Changer de protocole
102 - Traitement
- Codes de réponse de réussite (2xx)
200 - OK 206 - Contenu partiel
201 - Créé 207 - Multi-statuts
202 - Accepté 208 - Déjà signalé
203 - Info sans autorité 226 - IM utilisé
204 - Pas de contenu 250 - Espace de stockage faible
205 - Réinitialiser le contenu
- Codes de réponse de redirection (3xx)
300 - Choix multiples 304 - Non modifié
301 - Déplacé de façon permanente 305 - Utiliser un proxy
302 - trouvé 307 - Redirection temporaire
303 - Voir autres 308 - Redirection permanente
- Codes de réponse d'erreur client (4xx)
400 - Choix multiples 410 - Non modifié
401 - Déplacé en permanence 411 - Utiliser un proxy
402 - trouvé 412 - redirection temporaire
403 - Voir autre 413 - Redirection permanente
404 - Choix multiples 414 - Non modifié
405 - Déplacé définitivement 415 - Utiliser un proxy
406 - trouvé 416 - Redirection temporaire
407 - Voir autre 417 - Redirection permanente
408 - trouvé 418 - Redirection temporaire
409 - Voir les autres
- Codes de réponse aux erreurs du serveur (5xx)
500 - Erreur de serveur interne 508 - Boucle détectée
501 - Non implémenté 509 - Bande passante limitée
502 - Bad Gateway 510 - Non étendu
503 - Service non disponible 511 - Autorisation réseau requise
504 - Délai d'expiration de la passerelle 550 - Autorisation refusée
505 - HTTP Ver non pris en charge 551 - Option non prise en charge
506 - La variante négocie également 598 - Erreur de délai d'attente de lecture à New York
507 - Stockage insuffisant 599 - Erreur de délai de connexion réseau
4. Bien, mais comment vais-je traiter les données de test?
Cela dépend d'où vous obtenez les données de test. Ces frameworks de test vous permettront d'utiliser toutes les fonctionnalités du langage dans lequel ils sont basés -
a. Base de données: vous pouvez facilement créer des connexions à la base de données pour lire les données.
b. Fichier externe: vous pouvez lire du texte externe, JSON, CSV ou tout autre fichier.
c. Données aléatoires: vous pouvez utiliser des bibliothèques comme faker pour générer des données de test aléatoires à la volée.
<code> var faker = require ('faker');
var randomName = faker.name.findName (); // Rowan Nikolaus
var randomEmail = faker.internet.email (); // Kassandra.Haley@erich.biz
var randomCard = faker.helpers.createCard (); // carte de contact aléatoire contenant de nombreuses propriétés
</code>
d. Données de la réponse de l'API: Plusieurs fois pendant le test, vous devrez transmettre la réponse d'une API en tant que données de demande à une autre. Vous pouvez le faire en utilisant des hooks . Vous obtiendrez des fonctions comme Avant, Avant chaque, Après, Après chaque , qui, comme son nom l'indique, sont exécutées avant / après tout ou partie des tests. Appelez API1 avant API2 et transmettez sa réponse à API2. Parfait! ️
5. Le traitement des données de test et les appels d'API semblent simples, mais comment vais-je vérifier les réponses d'API?
Pour vérifier les réponses, vous aurez besoin d'une bibliothèque appelée bibliothèque d'assertions . De nombreux environnements de test sont fournis avec des bibliothèques d'assertions, ce qui vous permet d'écrire des assertions en anglais simple, comme la syntaxe. Ils vous permettent également de vérifier le schéma JSON de votre réponse.
Dans mocha, vous pouvez utiliser n'importe quelle bibliothèque d'assertions, par exemple, chai .
<code> response.status.should.equal (200)
foo.should.be.a ('chaîne');
foo.devrait.avoir.longueurOf (3);
tea.should.have.property ('flavors')
.avec.longueurOf (3);
</code>
6. Incroyable !!! Il restait un peu, après tous ces tests, de montrer à mon patron ce que j'ai fait et où j'ai trouvé des problèmes?
La plupart de ces frameworks vous fourniront un rapport de base de test HTML que vous pourrez télécharger et partager. Si vous avez besoin de rapports plus beaux avec des graphiques et des tableaux, vous pouvez utiliser plusieurs outils de rapport open source tels que allure ou mochawesome .

7. Seulement si je pouvais obtenir une sorte de modèle avec ces choses pour démarrer l'automatisation de l'API maintenant
Qu'est-ce que je t'ai dit, tu l'as appelé, tu as
Il s'agit du modèle que j'ai créé pour automatiser l'API à l'aide de mocha dans node.js.
Il comprend-
- Cadre de test (mocha),
- Bibliothèque de requêtes HTTP (supertest),
- Bibliothèque d'assertions (chai),
- Journaliste (allure),
- enregistreur (winston),
- Générateur de données aléatoires (faker),
- Support Eslint et
- validation de chaîne coquine intégrée . Tout ce que vous avez à faire est de le cloner / le télécharger et vous êtes prêt à partir.
Si vous avez besoin d'un modèle dans une autre langue, je peux le préparer pour demain.
Si vous avez aimé cet article, vous pouvez applaudir , cela me fera probablement écrire plus