Pourquoi le deuxième test est-il ignoré? Je veux que le deuxième test dépende de trois tests qui sont paramétrés comme test_first. Comment y parvenir?
t.py::test_first[10] PASSED t.py::test_first[20] PASSED t.py::test_first[30] PASSED t.py::test_second SKIPPED
La sortie est
import pytest from pytest_dependency import depends param = [10,20,30] @pytest.mark.parametrize("param", param) def test_first(param): assert(True) @pytest.mark.dependency(depends=['test_first']) def test_second(): assert(True)
Je veux t.py::test_second PASSED
ps Cela peut être demandé avant, mais j'ai quand même décidé de publier la question, car il est difficile de trouver une question brièvement formulée sur ce problème.
3 Réponses :
Eh bien, je ne sais rien du fonctionnement de la dépendance pytest, mais généralement les tests paramétrés sont représentés / nommés y compris leur valeur de paramètre par exemple en interne, test_first [10]
et test_first [20]
sont des tests différents, peut-être essayer? Consulter la documentation il indique obliquement que c'est le cas , notez comment l'assistant instances
génère des noms de la forme $ testname [$ params ...] code>.
La documentation parle également (suggère?) de marquer explicitement les instances paramétrées: https://pytest-dependency.readthedocs.io/en/latest/usage.html#parametrized-tests
À partir de cet exemple, je peux voir https: //pytest-dependency.readthedocs .io / fr / latest / usage.html que vous devez également décorer test_first avec @ pytest.mark.dependency ()
J'ai essayé, et malheureusement, je pense que ce n'est pas le cas ...
Vérifiez cet exemple avec "parentparam" pytest-dependency.readthedocs.io/en/latest /advanced.html
Votre commentaire m'a aidé.
Au fait, savez-vous comment utiliser ma propre notation au lieu de "c1", "c2", ..., "c6" dans "mytest.py::test_child[c6]"?
Une des solutions possibles à ma question est le code ci-dessous, mais il ruine l'indépendance des tests paramétrés ... Je suis donc toujours intéressé par une autre meilleure solution.
import pytest from pytest_dependency import depends param = [10,20,30] @pytest.mark.dependency(name="a1") def test_dum(): pass @pytest.mark.parametrize("param", param) @pytest.mark.dependency(name="a1", depends=['a1']) def test_first(param): assert((param == 10) or (param == 20) or (param == 31)) @pytest.mark.dependency(depends=['a1']) def test_second(): assert(True)