Bonjour,
dans mon équipe de développeurs Python, nous travaillons dans un environnement avec des règles strictes :
- Développement en mode Test Driven Development (Développement piloté par les tests) : on écrit les tests sur une méthode n'existant pas encore. Les tests plantent. On écrit la méthode. Les tests passent au vert, on passe aux tests suivants.
- L'objectif dans les tests est de couvrir 100 % du code, sauf exceptions sans importance capitale. La lib pytest-cov nous permet de cerner facilement les portions de code non encore couverts par les tests en mode graphique.
- Bien entendu, nous gérons 3 types de tests : unitaires (tests sur une méthode), fonctionnels (tests sur une fonctionnalité appelant plusieurs méthodes) et d'intégration (tests sur le programme en entier).
- Nous sommes biberonnés au quotidien avec pytest, pytest-mock, pytest-django (si on bosse avec Django pour en rajouter une couche). Avec ces libs, on patche (mocke) tout et on teste tout.
- On patche tout ce qui est nécessaire à travers nos tests afin de simuler par exemple une connexion en FTP qui fonctionne, ou bien qui plante, ou bien de simuler un effect de bord à l'appel d'une méthode afin de s'assurer qu'on tombe bien dans l'exception levée par un try/except.
- Nous travaillons chaque programme sous environnement virtuel.
- Tous nos programmes sont exploités en mode CI/CD sous Azure DevOps, d'où l'importance des nombreux tests et de l'environnement virtuel pour ne déployer que le strict nécessaire au bon fonctionnement du programme.
Et du coup, je pose deux questions à ceux qui liront ce petit pavé et auront envie d'y répondre :
- est-ce une méthodologie de travail courante ailleurs ?
- qu'est-ce que ce sera demain ?
Partager