当我尝试为黄瓜中的场景大纲编写我的第一步defs时,我碰到了一堵墙。
我在Cucumber中使用Gherkin功能,我的步骤defs调用我的各种页面类,它将使用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
但这会传递一串&#34; Have&#34;并且&#34;没有&#34;。我希望此步骤中的每个输入能够以不同方式驱动我的应用程序。所以我想知道如何最好地处理这个问题。
我想要驱动的代码是:
objPolicyAmendRequest.setColour();
所以在一个实例中(当传入string =&#34; Have&#34;)时我想将一个值传入我的方法,例如objPolicyAmendRequest.setColour(&#34; Blue&#34;);
和另一个(在string中传递=&#34;没有&#34;)我不想将任何东西传递给这个方法。
我猜我需要按照if语句的说法,但不确定Cucumber是否有办法帮助解决这个问题。
希望我有道理。我还有点新的编程方法!
答案 0 :(得分:0)
你的步骤
@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable
您可以为值颜色添加条件。
if(colour.equalsIgnoreCase("Have"){
//Some Logic Here
} else {
//Some Logic Here
}
如果您期望Color
的值不同,也可以使用switch
答案 1 :(得分:0)
我会用它来指定你想选择的颜色:
@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);
}