web-dev-qa-db-fra.com

Exécution de fonctions de test pytest dans un ordinateur portable jupyter

Je travaille sur une présentation sur python options de test, et l'une des technologies que je veux faire une démonstration est pytest. Je prévois de faire la présentation à partir d'un bloc-notes jupyter/ipython. Idéalement, je J'aimerais pouvoir définir une fonction de test dans une cellule, puis utiliser pytest pour exécuter uniquement cette fonction; de cette façon, je peux démontrer les caractéristiques individuelles de pytest, etc.

Existe-t-il une façon de procéder? Aucune des fonctionnalités interactives que j'ai vues dans l'API Pytest ne semble correspondre à la facture, mais je ne suis certainement pas un expert Pytest. Je serais heureux d'écrire un plugin pour le faire, donc tout conseil sur la meilleure approche dans cette direction serait formidable.

J'ai vu pytest-ipynb, mais il ne semble pas faire ce dont j'ai besoin. Si cette évaluation est erronée, des conseils sur la façon de l'utiliser seraient également intéressants.

23
abingham

J'ai créé ipython_pytest à cet effet et l'ai utilisé dans ma présentation PyCon Helsinki 2016 .

Vous utiliseriez l'outil comme ceci:

%%pytest

def test_my_stuff():
    assert 42 == 42

Malheureusement, je n'ai pas trouvé de moyen de rendre les fonctions et les classes définies dans le cahier disponibles pour tester les fonctions dans la cellule de test. J'apprécierais que quelqu'un trouve une solution pour cela.

11
akaihola

Il existe un module similaire qui semble très mature: https://github.com/chmp/ipytest

Il est référencé dans le module développé par @akaiola et semble plus actif.

Je n'utilise pas personnellement Jupyter donc je ne l'ai pas testé moi-même mais cela ressemble à une bonne solution.

Voici un exemple du référentiel Github ( https://github.com/chmp/ipytest/blob/master/Example.ipynb )

Jupyter Notebook with iPytest

14
Jean-Francois T.