【问题标题】:Using SpecFlow Featurs as subroutines in other features将 SpecFlow 功能用作其他功能中的子例程
【发布时间】:2020-08-22 19:46:01
【问题描述】:

我可能完全错了,但我已经搜索了可用的文档并在谷歌上搜索了 2 周,并且我的头完全缠绕在轴上。

我正在尝试使用 SpecFlow 为我们的网站编写回归测试。这意味着我想锻炼所有功能,以便如果我们无意中破坏了某些东西,它会抓住它。

该站点基本上是一个事件报告门户。主页有大约 50 个不同的按钮,每个按钮都会打开不同类别事件的数据输入页面。

数据输入页面以“向导”方式排列,从一般问题页面开始,然后转到更具体的问题页面,依此类推。这些问题或多或少地分组在经典的“谁/什么/何时/何地/为什么”分组中,每个组都有一个向导页面,这样我们就不会因为一次出现 100 个问题而让用户不知所措。

具体需要哪些页面取决于特定类型的事件。有些事件类型多达 8 页,有些则只有 3 页。

我们对每个页面的规范都采用 BDD 样式 - Given/When/Then。因此,将这些规范转换为 SpecFlow 特性是很自然的,我已经这样做了,至少对于一般信息问题的第一页。但是场景中有大约 30 多个步骤。

我还写了另一个功能,用于从主页进行测试-

    Given I'm logged in on the home page
    When I clicked the button for XYZ ticket
    Then it opens XYZ ticket 
    And the General Information page is displayed.

我可以从表格中驱动该场景,以便我可以根据需要测试尽可能多的不同事件类型。 到目前为止,一切都很好。 但是现在我想添加

    And the General Information page requirements are verified

最后一个子句的步骤定义将运行一般信息页面的整个场景。换句话说,我想在这个场景中使用我编写的其他场景作为子例程。 (然后我想继续对其他每个向导页面执行相同的操作。但让我们先获取第一个!)

我想不出办法来做到这一点。我尝试为上述子句编写步骤定义以调用通用信息场景的步骤定义,例如

    Given("I am on the General Information page")
    When ("I click this checkbox")
    Then ("This happens")

你曾经能够做到这一点(尽管这仍然需要大量重复)。但是现在它发出警告消息,该功能已被弃用并将被删除(因为我现在已经升级,它可能已经被删除 - 自从我升级后我还没有尝试过。)github问题页面(https://github.com/SpecFlowOSS/SpecFlow/issues/1733对此进行了很多讨论,但都没有说明如何做我想做的事情。主要作者(SabotageAndi)似乎在说“那是一件坏事;不要那样做”给出任何替代方案,至少没有我能理解的替代方案。

谁能告诉我如何完成我想做的事情?

【问题讨论】:

    标签: specflow


    【解决方案1】:

    我想使用我编写的其他场景作为子例程 在这个。

    您不能重复使用功能文件中定义的场景。

    您可以做的最好的事情是创建一个新的步骤,通过直接调用它们来重用已定义的步骤(jameswtelfer 于 1 月 31 日在您提供的 github 问题中发表评论)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-06
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 2014-04-10
      • 1970-01-01
      相关资源
      最近更新 更多