黄瓜场景大纲步骤定义
Cucumber Scenario Outline Step Definitions
我在尝试用 Cucumber 编写场景大纲的第一步定义时 运行 碰壁了。
我在 Cucumber 中使用 Gherkin 功能,其中我的步骤定义调用我的各种页面 类,它将使用 Selenium 驱动和检查页面。这个框架在Java.
到目前为止我已经完成了我的场景,但我现在有一个看起来有点像下面的功能:
Given I have started a policy amendment request application
When I <Colour> selected a Colour
And I <Number> select a Number
Then I <Date> be expected to populate a date the change is effective from
Examples:
|Colour | Number | Date |
|Have | Donot | Will |
|Havenot | Do | Willnot |
我这里的问题是关于如何在步骤 Def 中处理它。如果我看一下步骤
When I <Colour> selected a Colour
然后我知道我可以按如下方式添加一个步骤定义来选择这一行
@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable
但是这样会传入一串"Have"和"Have not"。我希望此步骤中的每个输入都能以不同方式驱动我的应用程序。所以我想知道如何最好地处理这个问题。
我要驱动执行的代码是:
objPolicyAmendRequest.setColour();
所以在一个实例中(当传入字符串 = "Have" 时)我想将一个值传入我的方法,例如 objPolicyAmendRequest.setColour("Blue");
和另一个(当传入字符串时= "Have not")我不想向这个方法传递任何东西。
我猜我需要执行 if 语句,但不确定 Cucumber 是否有办法解决这个问题。
希望我说的有道理。我对编程还是有点陌生!
加油
@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable
您可以为值颜色添加条件。
if(colour.equalsIgnoreCase("Have"){
//Some Logic Here
} else {
//Some Logic Here
}
如果您希望颜色有不同的值,也可以使用 switch
我会用它来指定您要选择的颜色:
@When("^I select the colour \"([^\"]*)\"$")
public void iSelectTheColour(String colour) throws Throwable
这用于(不)选择一种颜色,而不关心它是哪种颜色(默认值或随机值):
@When("^I have(?: not|) selected a colour$")
public void iHaveSelectedAColour(String optionalNot) throws Throwable
然后在代码中,你看要不要选择默认值:
if(optionalNot.equals(" not"){
//Some Logic Here
} else {
//Some Logic Here
}
这意味着您的方案有效:有 |没有,但由于措辞需要更改,功能也需要更改。
我相信您很有可能会这样做:
string colourToPick = //Some Colour;
if(optionalNot.equals(" not"){
iSelectTheColour(someOtherColour);
} else {
iSelectTheColour(colourToPick);
}
我在尝试用 Cucumber 编写场景大纲的第一步定义时 运行 碰壁了。
我在 Cucumber 中使用 Gherkin 功能,其中我的步骤定义调用我的各种页面 类,它将使用 Selenium 驱动和检查页面。这个框架在Java.
到目前为止我已经完成了我的场景,但我现在有一个看起来有点像下面的功能:
Given I have started a policy amendment request application
When I <Colour> selected a Colour
And I <Number> select a Number
Then I <Date> be expected to populate a date the change is effective from
Examples:
|Colour | Number | Date |
|Have | Donot | Will |
|Havenot | Do | Willnot |
我这里的问题是关于如何在步骤 Def 中处理它。如果我看一下步骤
When I <Colour> selected a Colour
然后我知道我可以按如下方式添加一个步骤定义来选择这一行
@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable
但是这样会传入一串"Have"和"Have not"。我希望此步骤中的每个输入都能以不同方式驱动我的应用程序。所以我想知道如何最好地处理这个问题。
我要驱动执行的代码是:
objPolicyAmendRequest.setColour();
所以在一个实例中(当传入字符串 = "Have" 时)我想将一个值传入我的方法,例如 objPolicyAmendRequest.setColour("Blue");
和另一个(当传入字符串时= "Have not")我不想向这个方法传递任何东西。
我猜我需要执行 if 语句,但不确定 Cucumber 是否有办法解决这个问题。
希望我说的有道理。我对编程还是有点陌生!
@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable
您可以为值颜色添加条件。
if(colour.equalsIgnoreCase("Have"){
//Some Logic Here
} else {
//Some Logic Here
}
如果您希望颜色有不同的值,也可以使用 switch
我会用它来指定您要选择的颜色:
@When("^I select the colour \"([^\"]*)\"$")
public void iSelectTheColour(String colour) throws Throwable
这用于(不)选择一种颜色,而不关心它是哪种颜色(默认值或随机值):
@When("^I have(?: not|) selected a colour$")
public void iHaveSelectedAColour(String optionalNot) throws Throwable
然后在代码中,你看要不要选择默认值:
if(optionalNot.equals(" not"){
//Some Logic Here
} else {
//Some Logic Here
}
这意味着您的方案有效:有 |没有,但由于措辞需要更改,功能也需要更改。
我相信您很有可能会这样做:
string colourToPick = //Some Colour;
if(optionalNot.equals(" not"){
iSelectTheColour(someOtherColour);
} else {
iSelectTheColour(colourToPick);
}