如何在故事中连接参数

时间:2017-11-08 13:26:55

标签: automated-tests jbehave

如何连接故事中的参数,例如:

@When("text {field|link|button} \"$fieldName\" equals \"$value\"")

在故事档案中,我想使用:

...
When text "MyField" equals "#{Number} for <Client>"
...
Examples:
|Client|
|MyClient|

但是不起作用,连接参数的最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

Yoy可以创建一个这样的方法:

Then value from field: $name contains values $x and $y

并在java代码中检查$ name是否包含两个值

@When("value from field: $name contains values $x and $y")
public void checkValues( String fieldName, String value1, String value2){
   String fieldValue = .... get value from field
   assertThat( fieldValue.contains( value1 ));
   assertThat( fieldValue.contains( value2 ));
}

您还可以创建一个更通用的方法,该方法接受以逗号分隔的值列表:

Then value from field: $name contains values from list:value2,1234,57575, some other string with spaces

及其实施:

@When("value from field: $name contains values from list:$list")
public void checkValues( String fieldName, List<String> list){
   String fieldValue = .... get value from field
   for(String s: list){
      assertThat( fieldValue.contains( s ));
   }
}

您还可以使用Hamcrest库中的方便方法:StringContainsInOrder

@When("value from field: $name contains values from list:$list")
public void checkValues( String fieldName, List<String> list){
   String fieldValue = .... get value from field;
   assertThat( fieldValue, StringContainsInOrder.stringContainsInOrder( list ));
}