我们开始使用Cucumber(Java)并真的很喜欢它,但是Cucumber在一个非常重要的情况下似乎完全失败了:
基本上,我有一个为给定登录用户运行的方案,我实际上需要使用不同类型的登录用户运行所有相同的测试。
然后,我需要使用具有不同角色(具有重叠权限的多个角色)登录的用户来运行完全相同的场景中的 most
使用背景轮廓功能可以做到这一点很简单,但是似乎在几年前就被拒绝了(https://github.com/cucumber-attic/gherkin/issues/56)
我知道以前已经有人问过这个问题,但是我一直在调高很老的线程(大约6岁!),只能回答“复制所有方案”。
复制数百个方案在每个方面都是一个失败,这使测试库难以管理(一个方案的更改需要传播到多个重复项)。它无法实现黄瓜的核心通信目标,因为我们收到了大量功能文件,这使得更难知道应用程序在做什么以及我们在测试什么。
自第一次投诉以来的6年中,有什么合理的方法来解决此问题?
在这一点上,我很想删除背景,并将其移入每个场景并使用场景大纲,这很丑陋,测试不再清晰地理解,但至少我不需要重复场景。
答案 0 :(得分:1)
然后,我需要使用具有不同角色(具有重叠权限的多个角色)登录的用户来运行大多数完全相同的方案
您想测试一个权限,但是正在测试角色。在我看来,这正在引起您的大多数问题。通常配置角色后,您也许可以利用此系统。
Given a customer service rep with the authority to grant refunds
And a customer reports a problems with the PX-11 Widget
When customer service resolves the problem by granting a refund
Then problem ticket is closed
And a refund request is lodged with finance
在给定的步骤中,您将为客户服务代表创建一个新角色,该角色可以授予退款。
如果您担心角色可能以奇怪的方式相互影响,则应尝试在较低的级别上进行解决和测试。您的验收测试中不会再出现这种问题。
但是,如果您无法执行此操作,则可能需要考虑以下三个选项中的任何一个。它将使小黄瓜保持可读性,但会增加一些测试的复杂性。但是这种复杂性表明系统存在问题。
除您关注的其他权限外,还使用请求的权限创建多个客户服务代表。然后,在每个后续步骤中,让所有代表执行特定操作。
对于每个测试,除了请求的权限外,还随机选择一个或多个权限。
随机选择具有所需权限的角色。