黄瓜情景大纲步骤定义

时间:2018-02-15 02:11:55

标签: java selenium-webdriver cucumber bdd

当我尝试为黄瓜中的场景大纲编写我的第一步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是否有办法帮助解决这个问题。

希望我有道理。我还有点新的编程方法!

2 个答案:

答案 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);
}