{{tag>dev python test-unitaire console cli}}
===== 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
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:
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"