Concombre (logiciel)
Définitions détapeModifier
Les étapes des fichiers Gherkin « s .feature
peuvent être considérées comme un appel de méthode. Avant Cucumber peut exécuter une étape, il faut lui dire, via une définition détape, comment cette étape doit être effectuée.
Les définitions sont écrites en Ruby et classées classiquement sous features/step_definitions/*_steps.rb
. Les définitions commencent par les mêmes mots-clés que leur appel (y compris la prise en charge complète de la langue de Gherkin). Chaque définition prend deux arguments
- Soit une expression régulière soit une chaîne avec $ variables
- Un bloc contenant du code ruby à exécuter
Exemple en utilisant des expressions régulières
Given /(.*) has a valid Credit or Debit card/ do |name| # Ruby codeend
Exemple utilisant des chaînes et des variables $. Notez quau moment de lexécution, la chaîne est convertie en une expression régulière, et toute variable $ est convertie pour correspondre à (.*)
.
Given "$name has a valid Credit or Debit card" do |name| # Ruby codeend
HooksEdit
Les Hooks sont le moyen de Cucumber de permettre la configuration avant que les tests ne soient exécutés et le démontage à exécuter par la suite. Ils sont définis comme des blocs Ruby exécutables , similaires aux méthodes JUnit marquées dannotations @Before, @After
. Elles sont classiquement placées sous support/
et sont appliquées globalement. Trois types de hooks de base existent
-
Before
– Sexécute avant un scénario -
After
– Sexécute après un scénario -
Around
– Prend le contrôle et tourne autour dun scénario
Les crochets supplémentaires incluent
-
BeforeStep
-
AfterStep
-
AfterConfiguration
– Sexécute après la configuration de Cucumber et est passé un in position de la configuration
Before, After, and Around
les hooks prennent éventuellement une liste de scénarios de filtrage de balises auxquels ils sappliquent. Une liste de balises dans la même chaîne est traitée comme OR
, tandis que les arguments individuels sont traités comme AND
; les balises peuvent éventuellement être annulées en étant précédées de ~
.
Exemple de tagged before hook
Before("@ATM") do |scenario| # Ruby codeend
Les hooks sont souvent utilisés pour maintenir létat de la base de données, généralement en nettoyant avant dexécuter un scénario. Il est également possible de démarrer et dannuler une transaction en utilisant les hooks Before
et After
, et de nombreuses extensions Cucumber fournissent un @txn
pour un tel objectif.
Intégrations et implémentationsEdit
Des implémentations non Ruby de Cucumber existent pour les langages courants tels que Java, JavaScript et Python. Il existe également un support pour les frameworks de test dintégration. Une liste complète des implémentations peut être trouvée sur Cucumber. Cucumber a intégré des outils de test fonctionnant bien avec de nombreuses configurations dintégration continue. Il existe des plugins concombre pour les outils CI populaires comme Jenkins et TeamCity, ainsi que pour les IDE comme Eclipse et RubyMine.
Voici un exemple de définition détape écrite pour Java avec Cucumber-JVM.
@Given("(.*) has a valid Credit or Debit card")public void has_card(String name) { // Java code}
Formatter pluginsEdit
Cucumber utilise des plugins de formateur pour fournir une sortie. Plusieurs formats courants sont fournis par défaut, notamment
- JSON
- HTML
- JUnit
Les formats disponibles sont non standardisé dans les différentes implémentations de Cucumber, les offres peuvent donc différer. Cucumber prend également en charge les formats de sortie riches comme les images et les vidéos.
Browser automationEdit
Cucumber ne fournit pas dautomatisation de navigateur intégrée. Cependant, il fonctionne bien avec les programmes existants tels que Selenium et WATiR-WebDriver. Il prend en charge lexécution de tests avec des transactions en exploitant dautres programmes tels que ActiveRecord.
Cucumber command-lineEdit
Cucumber est livré avec une interface de ligne de commande intégrée qui couvre une liste complète dinstructions . Comme la plupart des outils de ligne de commande, cucumber fournit loption --help
qui fournit un résumé des arguments acceptés par la commande.
La ligne de commande Cucumber peut être utilisée pour exécuter rapidement des tests définis . Il prend également en charge lexécution dun sous-ensemble de scénarios en filtrant les balises.
$ cucumber --tags @tag-name
La commande ci-dessus permet dexécuter uniquement les scénarios qui ont le spécifié @tag-name
. Les arguments peuvent être fournis sous la forme dune opération logique OR
ou AND
des balises. Outre les balises, les scénarios peuvent être filtrés sur les noms de scénario.
$ cucumber --name logout
La commande ci-dessus exécutera uniquement les scénarios contenant le mot « déconnexion ».
Il est également utile de pouvoir savoir ce qui ne va pas lorsquun test échoue. Cucumber facilite la détection des bogues dans le code avec loption --backtrace
.
Le concombre peut également être configuré pour ignorer certains scénarios qui nont pas été terminés en les marquant avec la balise Work In Progress @wip
. Lorsque Cucumber reçoit largument --wip
, Cucumber ignore les scénarios avec la balise @wip
.