如何从黄瓜方案中传递字符串列表

Yog*_*raj 9 scenarios cucumber cucumber-jvm

我需要传递黄瓜场景中的字符串列表,如下所示

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|
Run Code Online (Sandbox Code Playgroud)

在步骤定义中,我使用List检索某些变量的值。但是,当数据变量的值之一包含逗号(例如Tes,t4)时,它将变得复杂,因为它将“ Tes”和“ t4”视为两个不同的值

 Examples: Some example
 |something|
 |Test1, Test2, Test3, Tes,t4|  
Run Code Online (Sandbox Code Playgroud)

所以我可以使用任何转义字符还是有其他方法来处理这种情况

SUM*_*MIT 13

找到了一个简单的方法。请参阅以下步骤。

  • 这是我的功能文件。

    特征文件

  • 这是用代码映射特征步骤的相应代码。

    对应特征的代码

  • 哦是的。结果很重要。您可以看到调试视图。

    导致调试视图

  • 你使用的是哪个版本的黄瓜? (3认同)

Ran*_*h's 11

这应该适合你:

Scenario: Verify some scenario 
Given something
When user do something 
Then user should have following
| Test1 |
| Test2 |
| Test3 |
| Tes,t4| 
Run Code Online (Sandbox Code Playgroud)

在步骤定义中

Then("^user should have following$")
 public void user_should_have_following(List<String> testData) throws Throwable {
 #TODO user your test data as desired
 }
Run Code Online (Sandbox Code Playgroud)


Dan*_*riu 1

尝试在列中设置示例,如下所示:

| data   |
| Test1  |
| Test2  |
| Test3  |
| Tes,t4 |
Run Code Online (Sandbox Code Playgroud)

这将运行该场景 4 次,期望“某些内容”更改为下一个值。首先是“测试 1”,然后是“测试 2”,依此类推。

在步骤定义中,您可以像这样使用该数据:

Then(/^user should have some "([^"]*)"$/) do |data|
  puts data
end
Run Code Online (Sandbox Code Playgroud)

如果要使用|Test1, Test2, Test3, Tes,t4|,请将“,”更改为“;” 例如:|Test1; Test2; Test3; Tes,t4|并在步骤定义中分割数据:

data.split("; ")这导致["test1", "test2", "test3", "te,st"]

将数据转换为列表(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);
Run Code Online (Sandbox Code Playgroud)

更多相关内容请点击此处