Passer tous les tests de la décoration de chaque fonction de test avec @pytest.marque.skipif()?

0

La question

J'ai un pytest fichier qui nécessite de l'environnement en cours de jeu. J'ajoute donc le suivant décorateur sur chaque fonction.

@pytest.mark.skipif('password' not in os.environ,
                    reason='Environment variable "password" not set.')
def test_1(mock):
    ....

@pytest.mark.skipif('password' not in os.environ,
                    reason='Environment variable "password" not set.')
def test_2(mock):
    ....

@pytest.mark.skipif('password' not in os.environ,
                    reason='Environment variable "password" not set.')
def test_3(mock):
    ....

Est-il un moyen de passer tous les tests de la décoration de chaque fonction de test?

BTW, il suffit de sauter les tests avec le message suivant. Est-il un moyen pour afficher un avertissement les informations manquantes de la variable d'environnement?

====== 25 skipped in 5.96s =======
pytest python
2021-11-24 03:54:51
1

La meilleure réponse

2

Vous pouvez utiliser un appareil avec autouse=True qui ne le saut pour vous:

@pytest.fixture(autouse=True)
def skip_if_no_password():
    if 'password' in os.environ:
        yield
    else:
        pytest.skip('Environment variable "password" not set.')

Une autre possibilité est de mettre les tests en classe et de mettre le marqueur sur la classe au lieu de cela, comme mentionné par Luc Nelson dans les commentaires.

2021-11-24 12:10:19

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................