Cucumber:嵌套场景大纲周期
要自动化的场景:Cucumber:嵌套场景大纲周期,cucumber,gherkin,Cucumber,Gherkin,要自动化的场景: Given <precondition> was fulfilled And <user> is authorized When user requests <endpoint> Then user should receive <code> response 测试数据矩阵: | precondition | endpoint | user1 | user 2 | ...
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个端点。
需要为每个用户验证每个端点-因此它应该是一个嵌套循环。
我该怎么做呢?虽然我提出了这个选项,但它并没有遵循小黄瓜的惯例,因为什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候,什么时候 1.先决条件移动到@Before hook 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 |
已授权
然后,应收到相应的响应代码
|端点|用户1 |用户2|
|/users | 200 | 404|
|/create|u user|200|404|
|/update|u user | 200 | 404|
示例:
|用户名|
|用户1|
|用户2|
这也很不方便,因为当测试失败时,需要时间来识别有故障的端点。然而我提出了这个选项,但它不遵循小黄瓜的惯例,因为当测试失败时,然后将一个卡在一个端点中 1.先决条件移动到@Before hook 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 |
已授权
然后,应收到相应的响应代码
|端点|用户1 |用户2|
|/users | 200 | 404|
|/create|u user|200|404|
|/update|u user | 200 | 404|
示例:
|用户名|
|用户1|
|用户2|
这也很不方便,因为当测试失败时,识别故障端点需要时间。不要因为某些原因而这样做 1) 把所有这些路线和条件都放在小黄瓜里,你不会得到任何好处。没有人能读懂它们并理解它们,特别是当你尝试一些组合的东西时 2) Cuke场景运行缓慢,如果您想运行很多场景,可以通过编写快速单元测试来显著缩短运行时间 3) 如果您用代码编写这个测试,您可以比用小黄瓜编写的测试更优雅 4) 处理错误是痛苦的(正如您已经指出的)
你在这个特定的工作中使用了错误的工具,请使用其他工具。不要因为某些原因而这样做 1) 把所有这些路线和条件都放在小黄瓜里,你不会得到任何好处。没有人能读懂它们并理解它们,特别是当你尝试一些组合的东西时 2) Cuke场景运行缓慢,如果您想运行很多场景,可以通过编写快速单元测试来显著缩短运行时间 3) 如果您用代码编写这个测试,您可以比用小黄瓜编写的测试更优雅 4) 处理错误是痛苦的(正如您已经指出的)
对于这个特定的作业,您使用了错误的工具,请使用其他工具。您现在使用的工具有什么问题?您所说的“嵌套循环”是什么意思?嵌套是因为每一行都是一个具有自己先决条件的测试。然后每个用户都有一个周期。这里的问题是无法解析I examples表(步骤中只有数据表可以操作,但它用于单个测试,而不是大纲-它不会为每一行循环)。当使用示例时,表格标题是常量-我不能指出这个特定用户的状态代码,您现在所拥有的有什么问题?您所说的“嵌套循环”是什么意思?嵌套的,因为每一行都是一个有其自身先决条件的测试。然后每个用户都有一个周期。这里的问题是无法解析I examples表(步骤中只有数据表可以操作,但它用于单个测试,而不是大纲-它不会为每一行循环)。当使用示例时,表头是常量——我不能指出这个特定用户的状态代码——这是正确的答案。Cucumber的全部目的是用通俗易懂的语言捕获业务规则,以便团队能够共享对它们的理解。尝试将其用作集成测试的测试运行器只会是一个问题。我对情景大纲的经验法则是,它们永远不应该检查积极和消极的结果。这是一个很好的迹象,表明您正在将多个业务规则混合到一个场景中,而不是同一规则的多个示例。这是测试多个端点的方式,显然是混合了业务规则。这是正确的答案。Cucumber的全部目的是用通俗易懂的语言捕获业务规则,以便团队能够共享对它们的理解。尝试将其用作集成测试的测试运行器只会是一个问题。我对情景大纲的经验法则是,它们永远不应该检查积极和消极的结果。这是一个很好的迹象,表明您正在将多个业务规则混合到一个场景中,而不是同一规则的多个示例。这是测试多个端点的方式,显然是混合了业务规则。