我有一个用于测试类似于以下网络服务的黄瓜场景大纲:
Scenario Outline: Check the limit functionality
When I GET "/api/activity-schedule-items.xml" with parameters {<filter>}
Then the xml attribute "total-count" is "<count>"
Scenarios:
| filter | count |
| 'limit' => 0 | 0 |
| 'limit' => 2 | 2 |
| 'limit' => 2 | 2 |
| 'limit' => -1 | 15 |
工作正常,但是我想为每个web服务重新运行相同的场景大纲和场景。基本上,我想添加另一个Scenarios块,如:
Scenario Outline: Check the limit functionality
When I GET "<api>" with parameters {<filter>}
Then the xml attribute "total-count" is "<count>"
Scenarios:
| filter | count |
| 'limit' => 0 | 0 |
| 'limit' => 2 | 2 |
| 'limit' => 2 | 2 |
| 'limit' => -1 | 15 |
Scenarios:
| api |
| /api/activity-schedule-items.xml |
| /api/activity-schedules.xml |
| /api/tasks.xml |
并让黄瓜在两个表之间进行交叉连接。
更好的方法是指定“api”表格,使其适用于该功能中的所有场景。
有没有办法在黄瓜中实现这个?
答案 0 :(得分:4)
Cucumber并不真正支持场景中的'迭代'。你唯一的“本地”选择就是自己动手做“交叉加入”。
在我工作的地方,我们有一个非常相似的情况,我们分别运行Cucumber 8,然后汇总结果,这需要大量的管道,性能很糟糕。
我最近整理了一个宝石,旨在帮助解决这类问题,它非常粗糙,我没有亲自在愤怒中使用它,但它可以帮到你,看看https://github.com/jmerrifield/cuke_iterations。如果您认为它可能有用,我会很乐意帮助您启动并运行它。
答案 1 :(得分:3)
你可以使用表,但是表只迭代一行数,所以我将两步转换成一步。代码如下:
Scenario Outline: Check the limit functionality
When I GET api with following parameters Then the xml attribute "total-count" is as follows
| 'limit' => 0 | 0 | <api> |
| 'limit' => 2 | 2 | <api> |
| 'limit' => 2 | 2 | <api> |
| 'limit' => -1 | 15 | <api> |
Examples:
| api |
|/api/activity-schedule-items.xml |
|/api/activity-schedules.xml |
|/api/tasks.xml |
其次是您可能正在使用的传统方式
Scenario Outline: Check the limit functionality
When I GET "<api>" with parameters {<filter>}
Then the xml attribute "total-count" is "<count>"
Examples:
| filter | count | api |
| 'limit' => 0 | 0 | /api/activity-schedule-items.xml |
| 'limit' => 2 | 2 | /api/activity-schedule-items.xml |
| 'limit' => 2 | 2 | /api/activity-schedule-items.xml |
| 'limit' => -1 | 15 | /api/activity-schedule-items.xml |
| 'limit' => 0 | 0 | /api/activity-schedules.xml |
| 'limit' => 2 | 2 | /api/activity-schedules.xml |
| 'limit' => 2 | 2 | /api/activity-schedules.xml |
| 'limit' => -1 | 15 | /api/activity-schedules.xml |
| 'limit' => 0 | 0 | /api/tasks.xml |
| 'limit' => 2 | 2 | /api/tasks.xml |
| 'limit' => 2 | 2 | /api/tasks.xml |
| 'limit' => -1 | 15 | /api/tasks.xml |