6
votes

SPECFLOW: Maintenir un tableau d'exemples pour de nombreuses contours de scénario

existe-t-il une façon de garder la table de données "Exemples" dans un fichier distinct du contour des scénarios?

Qu'est-ce que j'essaie d'atteindre consiste à exécuter l'ensemble du scénario une fois par navigateur, l'un après l'autre.

J'ai ceci fonctionne avec la fonction suivante: xxx

mais cela signifie maintenir la table des exemples sur tous les tests si j'ai ajouté un autre navigateur. Est-il possible de faire référence à une seule table "exemples" de chaque plan de scénario?

ou appelez un plan de scénario, complet avec un tableau d'exemples, à partir d'une définition de marche?

(Utilisation de SPECFLOW et selenium webdriver avec nunit)

tandis que "fond" vous permet de définir une table partagée, il semble être pour une seule fonctionnalité avec plusieurs scénarios. Ce que je cherche, c'est un moyen d'utiliser la même table dans toutes les caractéristiques à travers différents fichiers (.Feature).

de l'expérience, je sais que l'utilisation de tags comme @chrome peut fonctionner pour des navigateurs individuels (c'est-à-dire Comment j'ai écrit la plupart de mes tests) mais que vous utilisez plusieurs balises, les résultats de tous les navigateurs fonctionnent en même temps, pas l'un après l'autre.


3 Réponses :


0
votes

Je ne crois pas que vous puissiez le faire dans Specflow (ou dans une mise en œuvre de la langue de la cornue). Comme mentionné dans la question connexe, vous pouvez avoir un arrière-plan pour fournir une table, mais je ne suis pas certain que cela peut être utilisé pour fournir des exemples dans des contours de scénario, au moins je n'ai jamais vu cela utilisé et je ne sais pas comment Cela pourrait fonctionner.

Des solutions possibles (sales), je peux penser que cela se déroulerait dans les lignes d'un script qui numérisait vos fichiers de fonctionnalité et mis à jour les exemples lorsque vous ajoutez un nouveau navigateur (je ne peux pas l'imaginer que cela soit très souvent), ou d'avoir Un extrait de code pour ajouter le texte des exemples si le problème est le problème.


0 commentaires

0
votes

SPECFLOW conseille d'utiliser des balises pour ce type de scénarios. Peut-être avez-vous fait le didacticiel de la librairie, puis vous le reconnaîtrez à partir des balises indiquées si un scénario était un système ou un test de navigateur.

@Chrome @Firefox @IE    # <- feature wide, applicable for all scenarios
Feature: Open Google

Scenario: Open Google in the browser
    Given the browser is active
    When I navigate to "https://www.google.co.uk/"
    Then the title should be 'Google'

@Lynx    # <- additional browser for a specific scenario
Scenario: There is a Search button
    Given the browser is active
    When I navigate to "https://www.google.co.uk/"
    Then I should see a button with label "Search"


2 commentaires

S'il vous plaît voir la dernière modification. Si vous connaissez un moyen de vous assurer que les navigateurs ne courent pas en même temps, nous avons peut-être une réponse.


Si vous exécutez Nunit à partir de la ligne de commande, Vous pouvez utiliser le / include Paramètre Pour exécuter uniquement des tests pour un type de navigateur. Dans le testSettup, vous devez déterminer quel navigateur doit être démarré et n'utilisez que ce navigateur pour cette couronne de renoncement spécifique.



1
votes

Je pense que l'approche la plus maintenue consiste à paramétrer le navigateur qui est utilisé en définissant une variable d'environnement avant d'exécuter le test. Dans votre définition code> indiquant code>, vous pouvez utiliser environnement.gevariable ("...") code> pour récupérer la valeur au moment de l'exécution.

Une autre alternative consiste à créer une spéciale Fichier texte contenant le nom du navigateur à utiliser. Ouvrez ce fichier et lisez le contenu de votre donnée par code> définition étape. P>

Si vous avez une version automatisée, vous pouvez configurer une coque d'alimentation ou un fichier de commandes qui définit ce fichier texte à Le premier navigateur exécute tous les tests, puis définit le fichier texte sur le navigateur suivant et remédier aux tests. Rincer et répéter pour chaque navigateur que vous souhaitez utiliser. P>

Vous pouvez le jeter dans le code> du projet de test dans Visual Studio et utilisez les transformations de configuration. Lors de l'exécution des tests de Nunit à partir de la ligne de commande, vous pouvez commuter la configuration: p>

nunit-console nunit.tests.csproj /config:Firefox
nunit-console nunit.tests.csproj /config:InternetExplorer
nunit-console nunit.tests.csproj /config:Chrome
nunit-console nunit.tests.csproj /config:Safari


0 commentaires