Je dois passer la liste des chaînes du scénario concombre qui fonctionne bien comme ci-dessous
Scenario Outline: Verify some scenario
Given something
When user do something
Then user should have some "<data>"
Examples: Some example
|data|
|Test1, Test2, Test3, Test4|
Dans la définition de l'étape, j'utilise List pour extraire les valeurs d'une variable . Mais lorsque l'une des valeurs de la variable data contient une virgule (,) Tes, t4 il devient complexe, car il considère "Tes" et "t4" comme deux valeurs différentes
Examples: Some example
|something|
|Test1, Test2, Test3, Tes,t4|
Y a-t-il un caractère d'échappement que je puisse utiliser ou existe-t-il un autre moyen de gérer cette situation?
Essayez de définir les exemples dans une colonne, comme ceci:
| data |
| Test1 |
| Test2 |
| Test3 |
| Tes,t4 |
Cela exécutera le scénario 4 fois, en s’attendant à ce que «quelque chose» passe à la valeur suivante. D'abord 'Test1', puis 'Test2', etc.
Dans la définition de l'étape, vous pouvez utiliser ces données comme suit:
Then(/^user should have some "([^"]*)"$/) do |data|
puts data
end
Si vous voulez utiliser |Test1, Test2, Test3, Tes,t4|
, changez le ',' en ';' ex: |Test1; Test2; Test3; Tes,t4|
et dans la définition de l'étape diviser les données:
data.split("; ")
qui résulte en ["test1", "test2", "test3", "te,st"]
Conversion des données en liste (en Java):
String test = "test1; test2; test3; tes,t4";
String[] myArray = test.split("; ");
List<String> myList = new ArrayList<>();
for (String str : myArray) {
myList.add(str);
}
System.out.print(myList);
Plus sur ceci ici
Ne mettez pas les données dans votre scénario. Vous en tirez très peu de profit et cela crée beaucoup de problèmes. Donnez plutôt un nom à vos données et utilisez-le dans la partie Ensuite de votre scénario.
par exemple.
Then the user should see something
Mettre des données et des exemples dans des scénarios est généralement inutile. Ce qui suit s'applique
Cela devrait fonctionner pour vous:
Scenario: Verify some scenario
Given something
When user do something
Then user should have following
| Test1 |
| Test2 |
| Test3 |
| Tes,t4|
Définitions d'étape
Then("^user should have following$")
public void user_should_have_following(List<String> testData) throws Throwable {
#TODO user your test data as desired
}