【发布时间】: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