2 votes

Limiter le nombre de cas de test à exécuter dans pytest

Un peu d'histoire

  • J'exécute mes cas de test avec Jenkins, je fais un petit POC avec Jenkins en ce moment.
  • Et, dans mon cas, il y a plus de 500 cas de test qui prennent une heure à exécuter.
  • Je veux qu'un seul cas de test soit exécuté, juste pour m'assurer que je n'ai pas fait d'erreur lors de mon POC Jenkins.

Existe-t-il un moyen de limiter le nombre de cas de test à exécuter ? quelque chose comme

  pytest -vv --limit 1

ou

en utilisant conftest.py ?

3voto

hoefling Points 10709

Vous pouvez limiter le nombre de tests de plusieurs façons. Par exemple, vous pouvez exécuter un seul test en passant son nom complet en paramètre :

$ pytest tests/test_spam.py::TestEggs::test_bacon

n'exécutera que la méthode de test test_bacon en classe TestEggs dans le module tests/test_spam.py .

Si vous ne connaissez pas le nom exact du test, vous pouvez le trouver en exécutant la commande suivante

$ pytest --collect-only -q

Vous pouvez combiner les deux commandes pour exécuter un nombre limité de tests :

$ pytest -q --collect-only 2>&1 | head -n N | xargs pytest -sv

s'exécutera en premier N les tests collectés.

Vous pouvez également mettre en œuvre la fonction --limit argumentez vous-même si vous le souhaitez. Exemple :

def pytest_addoption(parser):
    parser.addoption('--limit', action='store', default=-1, type=int, help='tests limit')

def pytest_collection_modifyitems(session, config, items):
    limit = config.getoption('--limit')
    if limit >= 0:
        items[:] = items[:limit]

La commande ci-dessus devient alors égale à

$ pytest --limit N

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X