2017-10-06 1 views
0

j'ai environ 10 tests dans la même fichier et chacun les a suivantes pour exécuter ensemble pourordre de marque pytest ne fonctionne pas

import pytest 
@pytest.mark.order1 
. 
. 
. 
@pytest.mark.order10 

Mais les tests effectués jamais dans l'ordre dans lequel ils sont affectés. Ils courent toujours dans l'ordre où ils sont arrangés. Quelque chose que je manque?

même @ pytest.mark.tryfirst ne fonctionnait pas. Une chose que je remarque est, le @ pytest.mark.order montre jamais en suggestions en atleast @ pyetst.mark.tryfirst était là PyCharm.

+1

Utilisez-vous http://pytest-ordering.readthedocs.io/en/develop/? Il note que c'est * "alpha-quality" *. – jonrsharpe

Répondre

1

Les marques pyest ne font rien de spécial, sauf pour marquer les tests. Les marques peuvent être utilisées uniquement dans le but de les filtrer avec l'option CLI -m.

C'est tout ce que pestest seul peut faire avec les marques. Eh bien, et quelques petites choses comme le paramétrage & skipif.

Spécifiquement, il n'existe pas de marque spéciale telle que tryfirst. C'est un paramètre à la déclaration de crochet, mais ceci n'est pas applicable pour les tests/marques.

Certains plugins externes ou internes peuvent ajouter un comportement spécial qui dépend des marques.

Pytest exécute les tests dans l'ordre dans lequel ils ont été trouvés (collectés). Dans certains cas, pytest peut réorganiser (regrouper) les tests pour une meilleure utilisation des appareils. Au moins, c'est déclaré; pas sûr si réellement fait.

Les tests sont supposés être complètement indépendants de par leur conception. Si vos tests dépendent l'un de l'autre, par ex. utiliser l'état du système testé dans les cas de test précédents, vous avez un problème avec la conception de test. Cet état devrait être en quelque sorte converti en luminaire (s). Si vous souhaitez toujours forcer certaines dépendances ou l'ordre des tests (contrairement aux principes de conception de test), vous devez installer un plugin pour l'ordre de test basé sur les marques, par exemple , et marquer les tests en fonction de ses noms de marques pris en charge.

0

Il semble que vous utilisiez la commande pytest. Ce paquet est en effet "qualité alpha" - je l'ai écrit et je n'ai pas passé beaucoup de temps à le garder à jour. Au lieu de décorer avec @pytest.mark.order1, essayez de décorer avec @pytest.mark.run(order=1). Je crois que le Read the Docs documentation n'est plus à jour.