黄瓜场景大纲步骤定义

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