Automated tests 如何在story中连接参数
如何连接故事中的参数,例如:Automated tests 如何在story中连接参数,automated-tests,jbehave,Automated Tests,Jbehave,如何连接故事中的参数,例如: @When("text {field|link|button} \"$fieldName\" equals \"$value\"") 在我要使用的故事文件中: ... When text "MyField" equals "#{Number} for <Client>" ... Examples: |Client| |MyClient| 。。。 当文本“MyField”等于“#{Number}for” ... 示例: |客户| |我的客户| 但不起
@When("text {field|link|button} \"$fieldName\" equals \"$value\"")
在我要使用的故事文件中:
...
When text "MyField" equals "#{Number} for <Client>"
...
Examples:
|Client|
|MyClient|
。。。
当文本“MyField”等于“#{Number}for”
...
示例:
|客户|
|我的客户|
但不起作用,连接参数的最佳实践是什么?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 ));
}
}
@When(“字段中的值:$name包含列表中的值:$list”)
公共无效检查值(字符串字段名、列表){
字符串字段值=…从字段中获取值
用于(字符串s:列表){
(fieldValue.contains)包含的资产;
}
}
您也可以使用Hamcrest库中的一种方便方法:
@When(“字段中的值:$name包含列表中的值:$list”)
公共无效检查值(字符串字段名、列表){
字符串字段值=…从字段中获取值;
资产(字段值,StringContainsOrder.StringContainsOrder(列表));
}
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 ));
}
}
@When(“字段中的值:$name包含列表中的值:$list”)
公共无效检查值(字符串字段名、列表){
字符串字段值=…从字段中获取值
用于(字符串s:列表){
(fieldValue.contains)包含的资产;
}
}
您也可以使用Hamcrest库中的一种方便方法:
@When(“字段中的值:$name包含列表中的值:$list”)
公共无效检查值(字符串字段名、列表){
字符串字段值=…从字段中获取值;
资产(字段值,StringContainsOrder.StringContainsOrder(列表));
}
JBehave还不支持在参数化步骤中部分替换命名参数。有一个未解决的问题和修复程序正在等待批准
以下是对这个问题的简要描述
鉴于我有一个已实施的步骤:
@Given("I do something with parameter $parameter")
public void doSomething(@Named("parameter") String parameter)
{
// ...
}
我有一个场景:
Scenario: Do something
Given I do something with parameter foo-<parameterPart>-bar
Examples:
|parameterPart|
|middle|
场景:做点什么
假设我使用参数foo--bar做了一些事情
示例:
|参数部件|
|中|
然后,parameterPart
应正确替换为
例子
和foo中间条
值应作为参数
传递给步骤
实施
JBehave还不支持在参数化步骤中部分替换命名参数。有一个未解决的问题和修复程序正在等待批准
以下是对这个问题的简要描述
鉴于我有一个已实施的步骤:
@Given("I do something with parameter $parameter")
public void doSomething(@Named("parameter") String parameter)
{
// ...
}
我有一个场景:
Scenario: Do something
Given I do something with parameter foo-<parameterPart>-bar
Examples:
|parameterPart|
|middle|
场景:做点什么
假设我使用参数foo--bar做了一些事情
示例:
|参数部件|
|中|
然后,parameterPart
应正确替换为
例子
和foo中间条
值应作为参数
传递给步骤
实施
我不确定我是否理解你的问题,但我认为这一行应该更像“When equals”,然后在示例下添加“object | value”,然后替换对象/值对。作为挑剔,通常x=y线更像是“然后”或“给定”而不是“何时”,因为它应该是设置线或评估线。When更像是“当我点击x时”,我在标签“NumberMyClient+someText+NameMyClient”中有一个文本,我想检查这个文本是否相等。文本的两部分及其参数,问题是我想进行串联。我可以分两步编写检查,然后文本“MyField”包含“”,然后文本“MyField”包含“”。如何在一步中完成?仍然不清楚,但实际的串联和比较将在底层步骤代码中完成,不在故事文件步骤定义中。也许您指的是一个步骤行,有两个比较,而只有一个比较,比如
Then contains和,那么底层Java代码可能是Assert(labelText.contains(clientNumber)和labelText.contains(clientName))代码>我不确定我是否理解你的问题,但我认为这行应该更像“When equals”,然后在示例下添加“object | value”,后面是要替换的对象/值对。作为挑剔,通常x=y线更像是“然后”或“给定”而不是“何时”,因为它应该是设置线或评估线。When更像是“当我点击x时”,我在标签“NumberMyClient+someText+NameMyClient”中有一个文本,我想检查这个文本是否相等。文本的两部分及其参数,问题是我想进行串联。我可以分两步编写检查,然后文本“MyField”包含“”,然后文本“MyField”包含“”。如何在一步中完成?仍然不清楚,但实际的串联和比较将在底层步骤代码中完成,不在故事文件步骤定义中。也许您指的是一个步骤行,有两个比较,而只有一个比较,比如Then contains和,那么底层Java代码可能是Assert(labelText.contains(clientNumber)和labelText.contains(clientName))代码>这不是我需要的,看上面的评论。这不是我需要的,看上面的评论。