有没有办法跳过或满足基于布尔值的场景?

Is there a way to skip or satisfy a scenario based on a boolean?

我遇到这样一种情况,在应用程序中实现了功能切换,我希望对应用程序的两种状态都进行自动 Selenium 测试。 (这两种状态在生产状态下都是可能的。)执行的测试将基于 Web 应用程序中存在的功能切换配置。

在正常情况下,使用“场景大纲”会生成一个可以通过测试资源管理器执行的测试,并且应用程序的 CI 进程可以配置为执行所有测试是构建后测试组件的一部分。在我的情况下,应用程序状态可能会导致一个测试通过而另一个测试失败(考虑由于功能状态而缺少 UI 控件)。我查看了钩子,发现有一个 BeforeScenario 标签,但我认为这并不能满足我想要实现的目标,因为它允许我在场景执行之前进行一些设置。

我通常包括一个将场景设置为“待定”的步骤。

Scenario: Some new feature
    Given pending story 123
    Given condition
    When action that includes new feature
    Then something

Given pending story 123 的步骤定义将调用:

Assert.Inconclusive($"Pending story {storyNumber} (https://dev.azure.com/company/project/workitems/edit/{storyNumber})");

这标志着使用 MS 测试时测试不确定。我们使用 Jenkins 进行持续集成,并且我们的构建不断通过。它也很方便,因为我可以在 Azure DevOps、GitHub、Jira 或类似的东西中为故事或功能提供 link。

这不完全是功能切换,但很容易删除或注释掉主题分支中场景的 Given pending 行以启用测试。