Réécriture de mes premiers tests API NUnit : plus propre, plus rapide, meilleur

DEV - 26/01
Vous êtes-vous déjà surpris à penser : « Qu'est-ce que je fais ? » Eh bien, c'est exactement ce que je ressens bien...

Vous êtes-vous déjà surpris à penser : « Qu'est-ce que je fais ? » Eh bien, c'est exactement ce que je ressens en ce moment. Je repensais à mes tutoriels précédents et je pensais : « Pourquoi ne pas les revoir, les critiquer et créer une meilleure version ? Et nous y sommes. Dans ce premier article, je revisiterai mon tutoriel initial : NUNit et C# - Tutoriel pour automatiser vos tests API à partir de zéro.

Je me souviens que ce projet est né d'un réel besoin au travail. Nous avions beaucoup d'API avec les tests Postman, et nous avons décidé de les migrer vers NUnit et C#. Aujourd’hui, après plus de deux ans, je vois de nombreuses façons de l’améliorer.

Bilan des tests qui seront automatisés et du projet

A partir des tests qui seront effectués. Pour ce nouveau projet, nous utiliserons le https://dummyjson.com/ juste pour tester certains concepts, puisque les API sont simples, et après cela, nous refactoriserons les tests pour les tests de l'API de la NASA. Pour le nouveau point de terminaison, nous automatiserons les tests suivants :

Point de terminaisonTestRésultats attendus
/utilisateursObtenez tous les utilisateursDoit renvoyer le statut 200 et une liste avec les informations utilisateur
/utilisateurs/ajouterCréer un nouvel utilisateurDoit renvoyer l'état 200 et les informations sur les données utilisateur

L'objectif principal est de rendre le projet plus robuste, plus facile à répliquer dans tous les scénarios, d'améliorer le traitement des demandes, de le rendre réutilisable pour différents projets, de permettre une future intégration CI/CD et de garantir la protection des données sensibles.

Création des tests automatisés

La première amélioration majeure concerne la façon dont nous configurons les requêtes API. Dans mon premier article, j'avais une méthode distincte pour chaque requête API. Maintenant, je les ai rendus plus abstraits et maintenables :

en utilisant RestSharp ; espace de noms ApiTestsWithNUnit.Common ; public class Requests(string baseUrl) { private readonly RestClient _client = new(baseUrl); Tâche asynchrone publique> ObtenirAsync(point de terminaison de chaîne, dictionnaire? en-têtes = null) { var request = new RestRequest (endpoint, Method.Get); if (headers != null) { foreach (var en-tête dans les en-têtes) request.AddHeader(header.Key, header.Value); } retourne attendre _client.ExecuteAsync(demande); } Tâche publique asynchrone> PostAsync(point de terminaison de chaîne, objet ? corps = null, dictionnaire? en-têtes = null) { var request = new RestRequest (endpoint, Method.Post); if (body != null) request.AddJsonBody(body); if (headers != null) { foreach (var en-tête dans les en-têtes) request.AddHeader(header.Key, header.Value); } retourne attendre _client.ExecuteAsync(demande); } }
Entrer en mode plein écran Quitter le mode plein écran

Et pour les tests, ils seront utilisés de la manière su...
[Courte citation de 8% de l'article original]

Loading...