Skip to content

Testing

M-Walravens edited this page May 28, 2021 · 2 revisions

Pour nous assurer que notre code marche bien comme il faut, et ce au fur et à mesure des commits. Nous utilisons certains outils pour valider de façon automatique tant notre backend que notre frontend.

Backend

Tests unitaires : Pytest

Très simple à utiliser, pytest nous permet d'importer des fonction, classes ou autre de nos fichiers python et via des assert valider qu'ils font ce qu'on attend d'eux. Pytest a aussi l'avantage de pouvoir produire des statistiques de coverage et de gérer simplement l'asynchrone.

Dans projet, nous l'utilisons pour tester des petits éléments de notre code python, on y teste notamment les méthodes de l'ORM et les schémas de validation.

Tests d'intégration : Pytest + TestClient FastAPI

Notre framework API inclus un client web pour envoyer des requêtes test et vérifier les réponses produites par notre application.

On s'en sert pour faire des tests d'intégration, et donc vérifier que les différentes routes de l'API font ce qu'on attend.

On y valide les status et contenu des réponses HTTP.

Frontend

Tests unitaires : Jest + vue-test-utils

Jest est un framework utilisé pour tester le js en général, dans ce projet on s'en sert couplé de vue-test-utils,

Ces outils nous permettent de monter de façon isolée nos composants Vue et y valider l'affichage dynamique et les méthodes par une série d'assertions.

De façon semblable aux tests unitaires python, on s'en sert pour tester des petites parties de notre frontend, sans interaction avec le backend ou autre.

Tests e2e : Nightwatch

Nightwatch est un outil js qui va lancer notre application et va la visiter avec un navigateur headless. Une fois dedans il peut y effectuer toutes les actions qu'un utilisateur normal pourrait faire.

Après chaque action, il peut vérifier que le contenu rendu est bien celui qu'on attend.

Ces tests dépendent du stack entier et donc servent à valider que le backend et frontend travaillent bien ensemble.

Automatisation

docker-compose

Un docker-compose spécifique à l'environnement de testing a été mis en place, il nous permet de lancer en une seule commande les tests sur des containers isolés de l'application principale.

Makefile

Une section tests a été incorporée au Makefile du projet, il permet de lancer en une seule commande la catégorie de tests qui nous intéresse, ou même tous les tests. Ceci même pour les tests qui demandent une mise en place d'abord, tels que les e2e et backend qui dépendent de la db avec les bonnes tables et utilisateur admin.

Action github

Après chaque commit et lors de la création d'une pull request, github va copier le repository dans un container et lancer tous les tests.

Ceci nous permet de toujours savoir si notre travail sur la branche où on est a pu impacter les tests précédents. Cette action est aussi utilisée, si les tests passent, pour déployer de façon automatique sur un vps.

Clone this wiki locally