Outils pour utilisateurs

Outils du site


dev:python:pytest:tester_une_sortie_console

Python : Tester une sortie sur la console avec Pytest

On souhaite écrire un test unitaire pour vérifier la sortie produite sur le terminal par la méthode Writer.hello_user(). La classe est définie dans le fichier parts.py

myapp/
├── __init__.py
└── models
    ├── __init__.py
    └── parts.py
parts.py
from abc import abstractmethod
 
 
class Writer:
    @abstractmethod
    def hello_user(username="Alice"):
        print (f"Hello {username}!")

Pour les tests on crée une arborescence dédiée basée sur l'arborescence des sources :

myapp/
tests/
├── __init__.py
└── myapp
    ├── __init__.py
    └── models
        ├── __init__.py
        └── test_parts.py

Pour pouvoir évaluer le contenu de la console on passe le paramètre capfd à la fonction de test:

test_parts.py
from myapp.models.parts import Writer
 
def test_hello_user(capfd):
    a_user = "John Doe"
    # L'appel de la méthode doit afficher un message sur la console
    Writer.hello_user(a_user)
 
    out, err = capfd.readouterr()
    assert out == "Hello John Doe!\n"
dev/python/pytest/tester_une_sortie_console.txt · Dernière modification : 2023/11/18 18:48 de yoann