在其他功能中将SpecFlow特征用作子例程

问题描述

我可能完全错了,但是我已经搜索了可用的文档并进行了2个星期的搜索,并且我的头完全缠绕在车轴上。

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

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

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

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

我们每页的规格均以BDD样式进行框架-给定/何时/然后。因此,将这些规范转换为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 @R_725_4045@ion page is displayed.

我可以从表中驱动该方案,以便可以测试任意数量的不同事件类型。 到现在为止还挺好。 但是现在我想添加

    And the General @R_725_4045@ion page requirements are verified

最后一条子句的步骤定义将在常规信息页面上运行整个方案。换句话说,我想使用我在此方案中作为子例程编写的另一方案。 (然后,我想继续对其他每个向导页面执行相同的操作。但是,让我们先获得第一个!)

我找不到解决办法。我尝试为上述子句编写步骤定义,以调用常规信息场景的步骤定义,例如

    Given("I am on the General @R_725_4045@ion page")
    When ("I click this checkBox")
    Then ("This happens")

您曾经能够做到这一点(尽管那仍会重复很多)。但是,现在这一个警告消息,该函数已被弃用并将被删除(并且由于我现在已经进行了升级,所以它可能已经被删除了-自升级以来我还没有尝试过。)github问题页面({{3 }}上有很多讨论,没有一个对如何做我想做的事情有任何启发。主要作者(SabotageAndi)似乎在说:“那是一件坏事;不要那样做”没有真正的选择,至少没有我能理解的。

任何人都可以给我一个指导,告诉我如何完成我想做的事情吗?

解决方法

我想将我编写的其他方案用作子例程 在这个。

您不能重复使用功能文件中定义的方案。

最好的办法是创建一个新步骤,通过直接调用已定义的步骤来重复使用这些步骤(jameswtelfer于1月31日在您提供的github问题中发表评论)。