【问题标题】:Is there a way to avoid duplicate Cucumber scenarios with different backgrounds?有没有办法避免不同背景的重复 Cucumber 场景?
【发布时间】:2018-11-10 18:31:16
【问题描述】:

我们开始使用 cucumber (Java) 并且非常喜欢它,但是 Cucumber 在一个非常重要的情况下似乎完全失败了:

基本上,我有一个针对给定登录用户运行的场景,我需要使用不同类型的登录用户运行所有相同的测试。

然后我需要运行大多数完全相同的场景,用户使用不同的角色登录(多个角色具有重叠的权限)

这对于背景大纲功能来说是干净而微不足道的,但这似乎在几年前就被拒绝了(https://github.com/cucumber-attic/gherkin/issues/56

我知道以前有人问过这个问题,但我一直在打开非常老的帖子(大约 6 岁!),除了“复制所有场景”之外没有其他答案。

复制数百个场景在各个方面都是失败的,它使测试库无法管理(一个场景中的更改需要传播到多个副本)。它在 cucumber 的核心通信目标上失败了,因为我们得到了大量的功能文件,这使得我们更难知道应用程序在做什么以及我们正在测试什么。

在第一次投诉后的 6 年里,有什么合理的方法可以解决这个问题吗?

此时我很想移除背景并将其移动到每个场景中并使用场景轮廓,它很丑陋并且测试不再读得干净,但至少我不需要复制场景。

【问题讨论】:

    标签: java testing background cucumber


    【解决方案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
    

    在给定步骤中,您为可以授予退款的客户服务代表创建一个新角色。

    如果您担心角色可能会以奇怪的方式相互影响,您应该尝试在较低级别解决和测试。在您的验收测试中,这不应该是一个问题。

    如果您无法这样做,您可能需要考虑以下三个选项中的任何一个。它将以增加一些测试复杂性为代价保持小黄瓜的可读性。但这种复杂性表明系统存在问题。

    1. 除了您关心的其他权限之外,还创建具有请求权限的多个客户服务代表。然后在每个后续步骤中让所有代表执行特定操作。

    2. 对于每个测试,除了请求的权威,随机选择一个或多个权威。

    3. 随机选择一个具有所需权限的角色。

    【讨论】:

    • 抱歉,我认为您没有遇到问题。基本上我有 100 次这样的测试 背景:假设我们以管理员身份登录到应用程序 场景 1-100.. 做点什么。在一种情况下,我需要背景:以经理身份登录 场景 1-70 做一些事情,(完全相同的场景步骤)使用背景大纲这很容易,我可以使用具有不同背景的相同场景。这似乎是不可能的,所以我必须复制我的场景,这会创建大量重复的代码,这不是一个可行的测试解决方案。 80% 重复的测试代码是可怕的
    猜你喜欢
    • 2019-10-13
    • 2020-10-21
    • 2015-01-27
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2018-06-29
    相关资源
    最近更新 更多