我需要从黄瓜场景中传递字符串列表,其工作正常如下
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|
在步骤定义中,我使用List来检索变量的值。 但是当数据变量的值之一包含逗号(,)时,例如Tes,t4变得复杂,因为它将“Tes”和“t4”视为两个不同的值
Examples: Some example
|something|
|Test1, Test2, Test3, Tes,t4|
那么我可以使用任何转义字符,还是有任何其他方法来处理这种情况
答案 0 :(得分:4)
答案 1 :(得分:0)
尝试在列中设置示例,如下所示:
| data |
| Test1 |
| Test2 |
| Test3 |
| Tes,t4 |
这将使场景运行4次,期待&#39;某些事情&#39;更改为下一个值。首先是Test1&#39;,然后是&#39; Test2&#39;等。
在步骤定义中,您可以使用这样的数据:
Then(/^user should have some "([^"]*)"$/) do |data|
puts data
end
如果您想使用|Test1, Test2, Test3, Tes,t4|
,请更改&#39;,&#39;到&#39;;&#39;例如:|Test1; Test2; Test3; Tes,t4|
并在步骤定义中拆分数据:
data.split("; ")
会产生["test1", "test2", "test3", "te,st"]
将数据转换为List(使用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);
有关此here
的更多信息答案 2 :(得分:0)
这应该适合你:
Scenario: Verify some scenario
Given something
When user do something
Then user should have following
| Test1 |
| Test2 |
| Test3 |
| Tes,t4|
在步骤定义
中Then("^user should have following$")
public void user_should_have_following(List<String> testData) throws Throwable {
#TODO user your test data as desired
}
答案 3 :(得分:0)
不要将数据放在您的方案中。你从中获得的收益很少,而且会产生很多问题。而是为您的数据命名,并在您的方案的Then中使用该名称
e.g。
Then the user should see something
在场景中放置数据和示例大多没有意义。以下适用
答案 4 :(得分:0)
在TypeRegistryConfigurer的Transformer中,您可以执行此操作
@Override
public Object transform(String s, Type type) {
if(StringUtils.isNotEmpty(s) && s.startsWith("[")){
s = s.subSequence(1, s.length() - 1).toString();
return Arrays.array(s.split(","));
}
return objectMapper.convertValue(s, objectMapper.constructType(type));
}