Slide 1

Slide 1 text

Techniques de test avancées en Python Ronan Amicel @amicel PyCon FR — 23 septembre 2017 — Toulouse

Slide 2

Slide 2 text

Ronan Amicel Développeur
 Consultant
 Coach technique
 Startups http://pocketsensei.fr/

Slide 3

Slide 3 text

Le plan 1. Contrôler l’exécution des tests 2. Mettre en place le contexte 3. Paramétrer les tests 4. Vérifier ce qui s’est passé

Slide 4

Slide 4 text

0 Préambule : py.test

Slide 5

Slide 5 text

$ py.test • Un outil en ligne de commande pour lancer vos tests : • découverte • exécution • affichage des résultats

Slide 6

Slide 6 text

import pytest • Un framework pour écrire vos tests • avec très peu de bla bla • avec un mécanisme de fixtures très flexible

Slide 7

Slide 7 text

1 Techniques pour contrôler l’exécution des tests

Slide 8

Slide 8 text

Sélection

Slide 9

Slide 9 text

Exécuter tous les tests $ py.test

Slide 10

Slide 10 text

Exécuter seulement
 certains tests $ py.test tests/unit/ $ py.test toto.py $ py.test --pyargs mon.module

Slide 11

Slide 11 text

Un test bien précis $ py.test fichier.py::fonction $ py.test fichier.py::Classe::methode

Slide 12

Slide 12 text

Seulement les tests dont le nom contient un mot-clé $ py.test -k toto $ py.test -k 'toto or tata'

Slide 13

Slide 13 text

Collecter les tests uniquement $ py.test --collect-only

Slide 14

Slide 14 text

Quand les tests
 sont au rouge

Slide 15

Slide 15 text

Lancer seulement les tests qui ont échoué la dernière fois $ py.test --lf $ py.test --last-failed

Slide 16

Slide 16 text

Lancer d'abord les tests qui ont échoué la dernière fois $ py.test --ff $ py.test --failed-first

Slide 17

Slide 17 text

S’arrêter à la première erreur $ py.test -x $ py.test --exitfirst

Slide 18

Slide 18 text

Afficher les valeurs des variables locales $ py.test -l $ py.test --showlocals

Slide 19

Slide 19 text

Basculer sur le débogueur
 en cas d’erreur $ py.test --pdb

Slide 20

Slide 20 text

Combo ! $ py.test --ff -x -l --pdb

Slide 21

Slide 21 text

pytest.ini [pytest] addopts = --ff -x -l --pdb

Slide 22

Slide 22 text

Plugins

Slide 23

Slide 23 text

Lancer ses tests en parallèle $ pip install pytest-xdist $ py.test -n4

Slide 24

Slide 24 text

Couverture de tests $ pip install pytest-cov $ py.test --cov myproj

Slide 25

Slide 25 text

tox

Slide 26

Slide 26 text

pyenv

Slide 27

Slide 27 text

2 Techniques pour mettre en place le contexte

Slide 28

Slide 28 text

3 Techniques pour paramétrer les tests

Slide 29

Slide 29 text

4 Techniques pour vérifier ce qui s'est passé

Slide 30

Slide 30 text

Voir les exemples sur GitHub https://github.com/ronnix/pyconfr2017/

Slide 31

Slide 31 text

En savoir plus http://pytest.org/ https://tox.readthedocs.io/ https://github.com/pyenv/pyenv http://hypothesis.readthedocs.io/

Slide 32

Slide 32 text

Questions ?

Slide 33

Slide 33 text

Merci !