web-dev-qa-db-fra.com

Comportement, comment exécutez-vous un scénario uniquement?

J'ai une fonction "se comporter" qui comporte de nombreux tests.

Je n'ai qu'à exécuter un scénario spécifique pour les besoins de développement.

Comment fait-on ça?

(de préférence sur la ligne de commande)

24
Mark Lopez

Pour exécuter un seul scénario, vous pouvez utiliser -n avec le nom du scénario:

$ behave -n 'clicking the button "foo" should bar the baz'

J'utilise des guillemets simples ci-dessus pour conserver le nom du scénario comme argument one pour -n. Sinon, le shell passera chaque mot du nom de scénario comme un argument distinct.

26
Louis

Si vous souhaitez exécuter un seul test pour cette fonctionnalité, utilisez le -n ou --name drapeau qui semble vouloir le texte après Scenario:

behave -n 'This is a scenario name'

Vous pouvez exécuter un fichier de fonction en utilisant -i ou --include drapeaux puis le nom du fichier de fonction.

behave -i file_name.feature

ou:

behave --include file_name

Vous pouvez également exclure avec le --exclude drapeau:

behave -e file_name

Pour plus d'informations, consultez la documentation de arguments de ligne de commande . Il y a beaucoup d'informations utiles cachées dans leur section annexe.


REMARQUE: Au moment où j'écris ceci, cela ne fonctionnera pas avec Python 3.6 et Behave 1.2.5, à cause de cela problème . (MISE À JOUR: 1.2. 6 est sorti et corrige cela, mais si vous êtes sur python 3.4 cette version ne sera pas disponible depuis pip donc vous pouvez contourner cela avec pip3 install git+https://github.com/behave/behave#1.2.6rc).

Il semble également que vous devriez pouvoir passer le texte après Feature: pour l'indicateur -i mais actuellement cela ne fonctionne pas. Quelqu'un me rappelle de mettre à jour si cela fonctionne à nouveau. J'encourage également les gens à vérifier le drapeau wip, qui vous permet d'ajouter @wip à un test, puis -wip exécutera non seulement le test, mais autorisera également les instructions d'impression/de journalisation pour le débogage.

22
Cynic

Les balises offrent quelques options ...

1) Marquez les lents puis évitez en invoquant avec l'inverse, par ex.

behave -t '~@slow_tag_name'  

2) Cependant, pour plus de flexibilité, je recommanderais personnellement de marquer chaque scénario avec un ID unique. par exemple. J'utilise un @YYYY_MM_DD_HHmm_Initials schéma de balises depuis, c'est assez unique et la traçabilité est utile/intéressante. Ensuite, vous pouvez toujours simplement invoquer avec la balise et la faire exécuter le scénario, .e.g

behave @2015_01_03_0936_jh 
4
shufflingb