1
votes

Comment faire un test qui dépend du test paramétré. (Pytest)

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.


0 commentaires

3 Réponses :


0
votes

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 ...] .

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


0 commentaires

2
votes

À 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 ()


4 commentaires

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]"?



0
votes

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)


0 commentaires