自动化方案:
Given <precondition> was fulfilled
And <user> is authorized
When user requests <endpoint>
Then user should receive <code> response
测试数据矩阵:
| precondition | endpoint | user1 | user 2 | ....
| | /users | OK | Not Found |
| | /roles | OK | OK |
| | /create_user | OK | OK |
| object user exists | /update_user | OK | OK |
| object user exists | /delete_user | OK | OK |
| | /create_data_role | OK | Not Found |
| data role exists | /update_data_role | OK | Not Found |
....
大约有20个用户具有不同的角色组合和大约20个端点。 需要验证每个用户的每个端点-因此它应该是一个嵌套循环。 我该怎么办?
答案 0 :(得分:2)
不要在黄瓜中这样做-原因
1)将所有这些路线和条件放到小黄瓜中并没有任何好处。没有人可以阅读并理解它们,特别是如果您尝试组合的东西
2)Cuke方案运行缓慢,并且您希望运行许多方案,因此可以通过编写快速的单元测试来大大减少运行时间。
3)如果您使用代码编写此测试,则可以比在Gherkin中编写的更加优雅。
4)处理错误很痛苦(正如您已经指出的那样)
您为此任务使用了错误的工具,请使用其他工具。
答案 1 :(得分:0)
但是我想出了这个选项,但是它没有遵循小黄瓜的约定,因为“何时”和“然后”会卡在一个选项中 1.前提条件移至@Before钩子 2.场景
Given <user> is authorized
Then <user> requests functionality appropriate response code should be received
| ENDPOINT | USER1 | USER2|
| /users | 200 | 404 |
| /create_user | 200 | 404 |
| /update_user | 200 | 404 |
Examples:
| username |
| USER1 |
| USER2 |
这也很不方便,因为当测试失败时,识别出故障端点需要花费时间