Existe-t-il un moyen de spécifier un paramètre pytest.mark.parametrize()
pour pytest
, afin que les paramètres ne soient générés dynamiquement que si le test est sélectionné pour être exécuté?Comment utiliser un callable comme paramètre pytest parametrize()?
J'ai quelques opérations coûteuses à effectuer pour générer les paramètres, et je ne veux les exécuter que si le test est sélectionné pour être exécuté.
par exemple,
import pytest
def my_callable():
# do expensive operations here
return [(1, 2), (3, 6)]
# I want my_callable to be called only if test_something
# has been selected to be run
@pytest.mark.parametrize("my_parm_1,my_parm_2", my_callable)
def test_something(my_parm_1, my_parm_2):
assert my_parm_1 * 2 == my_parm_2
Tout cela ressemble à une petite déficience du côté pyêt. Peut-être vaut-il mieux envisager de déposer un bug avec pytest afin de reporter l'évaluation des paramètres au moment où les tests décorés sont exécutés (ou ajouter un paramètre decorator qui fait cela) ... – sophros