Je ne fais plus de tests unittaires sans pytest, et je me retrouve souvent à rentrer les mêmes paramètres de la commande encore et encore. Parfois, quand j’utilise des wrappers tels que django-pytest et pytest-django (ça s’invente pas), je ne peux même pas passer d’arguments directement à py.test
.
On peut y remédier en créant un fichier de config à la racine du projet. Nommez le fichier tox.ini, car c’est aussi le nom du fichier de configuration de l’outil de tests tox, et il est compatible, donc autant avoir un seul format. Dedans, créez une section pytest, et vous pouvez configurer la lib la dedans.
En l’occurrence, le settings “addopts”, pour “add options” (ajouter options), permet de spécifier les options de la ligne de commande à toujours ajouter à py.test
.
Mon fichier contient toujours au moins ceci :
[pytest] addopts = --ignore="virtualenv" --capture=no |
Ainsi py.test
ignore toujours le dossier virtualenv (qui est un lien vers l’env virtuel de mon projet) car je ne veux pas qu’il lance les tests de ce dossier. Et il ne capture pas stdout, ce qui me permet d’utiliser ipdb pendant les tests unittaires. Parfois j’utilise aussi --maxfail=1
quand je veux qu’il s’arrête dès la première erreur rencontrée.
Pour ne pas aller dans ce dossier et ne pas capturer stdout.
Parfois, quand j’
autilise des wrappers ;-)Pour ceux qui n’utilisent pas tox, pytest.ini ou setup.cfg sont aussi regardés…
Ah oui effectivement lorsqu’on utilise tox, ça fait un fichier en moins. Pas con. Merci pour l’astuce.