我可以在黄瓜中写“或”语句吗?

时间:2019-09-20 16:43:51

标签: cucumber cucumberjs

我是刚开始使用Cucumber测试框架,并试图测试表是否在其中一个单元格中包含值。我要查找的值可以在4个不同的值之间变化:待定,空闲,活动,未知。如何测试是否至少存在这些值之一?

这是我目前拥有的,但是它仅测试以下值之一:

  Scenario: Status exists in my table
    When I am in the Edge UI
     And I click "Administration"
     And I click "Sites"
    Then I see "Site Elements"
     And I see "Idle" inside table

这就是我想要做的:

  Scenario: Status exists in my table
    When I am in the Edge UI
     And I click "Administration"
     And I click "Sites"
    Then I see "Site Elements"
     And I see "Idle" or "Pending" or "Active" or "Unknown" inside table 

4 个答案:

答案 0 :(得分:0)

您可以像这样在最后一行制作正则表达式模式:

我看到(。*)

在此之后,您可以使用ifs ose开关

开关(参数) {  案例:“空闲”:    //这里的逻辑 }

答案 1 :(得分:0)

是的,黄瓜表达式可让您灵活地通过/使用or。 有关更多信息,请参见https://cucumber.io/docs/cucumber/cucumber-expressions/#alternative-text

答案 2 :(得分:0)

您应该以其他方式编写Cukes。不要使用库克来记录如何做,而应该使用它们来记录您正在做的事情以及为什么这样做很重要。这涉及将所有HOW推入步骤定义或由步骤定义调用的更好的辅助方法。

您想让场景做的第二件事实际上就是测试某些行为。因此,理想情况下,您希望执行一些更改这些状态​​之一的操作,即执行一项操作,使该值从待处理变为有效。

所有有关单击此单击,单击并查看特定字符串的内容都是编写非常脆弱的场景的好方法,这种场景会在有人更改HOW中的较小细节时中断,即使这些更改不会破坏功能的功能正在完成

答案 3 :(得分:0)

Scenario: Any status exists in my table
 When I am in the Edge UI
  And I click "Administration"
  And I click "Sites"
 Then I see "Site Elements"
  And I see a site status inside the table 

我相信这就是您要在此处交流的内容。在步骤定义中,然后可以检查它是否为公认的状态之一。

Given('I see a site status inside the table', function (){...})

但是,如果您要查找每个人,然后将其拆分为“方案大纲”,并使用此处的其他答案作为启发,则可以匹配要在每种方案中看到的状态:

defineParameterType(new ParameterType(
    'siteStatus',      
    /Idle|Pending|Active|Unknown/,
    String,             
    s => new String(s)
))

Given('I see "{siteStatus}" inside the table', function (){...})

OR

Given(/^I see "(Idle|Pending|Active|Unknown) inside the table"$/, function (){...})

旁边

Scenario Template: Each status exists in my table
 When I am in the Edge UI
  And I click "Administration"
  And I click "Sites"
 Then I see "Site Elements"
  And I see a "<status>" inside the table

Scenarios:
 | status  |
 | Idle    |
 | Pending |
 | Active  |
 | Unknown |