我是刚开始使用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
答案 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 |