【问题标题】:Cucumber Scenario Outline Step DefinitionsCucumber 场景大纲步骤定义
【发布时间】:2018-07-25 17:29:52
【问题描述】:

在尝试为 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 &lt;Colour&gt; selected a Colour
然后我知道我可以添加如下步骤def来接这一行

@When("^I \"([^\"]*)\" selected a Colour$")
public void iColourSelectedA(String colour) throws Throwable 

但这会传入一个字符串“Have”和“Have not”。我希望这一步的每个输入都能以不同的方式驱动我的应用程序。所以我想知道如何最好地处理这个问题。

我要驱动执行的代码是:

objPolicyAmendRequest.setColour();

所以在一个实例中(当传入 string = "Have")我想将一个值传入我的方法,例如 objPolicyAmendRequest.setColour("Blue");

和另一个(当传入 string = "Have not")我不想将任何东西传递给这个方法。

我猜我需要执行 if 语句,但不确定 Cucumber 是否有帮助。

希望我说得通。我对编程还是有点陌生​​!

【问题讨论】:

    标签: java selenium-webdriver cucumber bdd


    【解决方案1】:

    在你的一步

    @When("^I \"([^\"]*)\" selected a Colour$")
    public void iColourSelectedA(String colour) throws Throwable 
    

    您可以为值颜色添加条件。

    if(colour.equalsIgnoreCase("Have"){
      //Some Logic Here
    } else {
      //Some Logic Here
    }
    

    如果您期望颜色的值不同,您也可以使用 switch

    【讨论】:

    • 太棒了。我一直在考虑这些思路,但不确定这是否是正确的方法,所以感谢您的保证。
    • 您是否应该有相同的步骤来说明您有a颜色,并说明您有特定颜色?
    • 黄瓜场景写得不好。我什至不明白这些步骤的逻辑
    【解决方案2】:

    我会用它来指定您要选择的颜色:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多