问题标签 [gherkin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1565 浏览

bdd - 对我的 Gherkin 感到困惑 - 网页之间的导航

我刚开始在一个 Web 项目中使用 BDD,使用 SpecFlow 和 WatiN 通过浏览器自动执行操作,我不太确定如何编写我的步骤。

我试图从测试中驱动所有内容,并且以 TDD 方式,除非需要通过测试,否则不要写任何东西。(我也在做单元测试来驱动细节,但这个问题与此无关)。我感到困惑的一件事是页面之间的导航,以及是否/如何在规范中定义。

第一个测试涉及输入一些详细信息并确保它们显示在列表中。我的第一次尝试是这样的:

场景:添加详细信息选项 1

鉴于我在“主页”页面
上当我单击“添加详细信息”
并在名称字段中输入“John Smith”
并单击“保存”
然后“John Smith”出现在列表中

但是,这涉及在几个页面之间导航,所以我不知道这是否需要明确 - 否则,我只需要假设我在正确的页面上,或者显然与我的哪个页面无关的步骤m on(例如,“当我单击添加详细信息时”)有断言来检查我在哪个页面上。

我们是否检查场景中具有明确步骤的页面?

场景:添加详细信息选项 2

假设我在“主页”页面
上当我单击“添加详细信息”
并且我在“添加详细信息”页面上
并且我在名称字段中输入“John Smith”
然后单击“保存”
并且我在“主页” page
然后“John Smith”出现在列表中

或者我们是否按照选项 1 的步骤进行操作,只是没有明确提及?

例如,是否应该单击“添加详细信息”检查我们是否最终进入了正确的页面?

或者我们应该在输入详细信息之前检查我们是否在正确的页面上?

或者,我们可以从

鉴于我在“添加详细信息”页面

并且只需使该步骤包括从主页开始并单击“添加详细信息按钮”以进入该页面。尽管在我们单击“保存”后导航回主页仍然存在相同的问题。

有什么想法吗?

0 投票
1 回答
25161 浏览

.net - SpecFlow - 您如何正确使用功能文件中的“背景:”命令?

我一直在阅读文章,观看一些屏幕录像并玩一些示例/演示教程。

我读过一篇文章,有人说“不要使用太多背景”。我很好奇,所以我在 SpecFlow 的功能文件中尝试了它,它突出显示为一个命令。

我一直在尝试为“Gherkin”找到一些语言指南,因为这就是它的目的,但还没有运气。

那么它是如何使用的呢?是否有任何文档可以告诉我我缺少哪些其他命令以及如何使用?

谢谢。

0 投票
2 回答
26211 浏览

cucumber - SpecFlow/Cucumber/Gherkin - 在场景大纲中使用表格

希望我能清楚地解释我的问题,让其他人理解,我们开始吧,假设我有以下两个假设场景:

这些场景很有用,因为我可以根据需要添加任意多的字段/值行和然后值条目,而无需更改相关的已编译测试步骤。然而,不同过滤器测试的复制/粘贴场景将变得重复并占用大量代码 - 我想避免这种情况。理想情况下,我想创建一个场景大纲并保持上面测试的动态特性,但是当我尝试这样做时,我遇到了定义示例表的问题,我无法添加我认为合适的新行,因为那将是一个新的测试实例,目前我有这个:

所以我遇到了在使用场景大纲时能够动态地将行添加到我的过滤器和预期数据的问题,有人知道解决这个问题的方法吗?我应该从不同的角度来解决这个问题吗?

解决方法可能类似于:

但这不是很动态....希望有更好的解决方案?:)

0 投票
2 回答
2248 浏览

css - Watir - 使用 CSS 元素

希望有人可以帮助我,告诉我它不能完成或指出我正确的方向。

我正在尝试使用 Watir Ruby 书面测试来检查在选中复选框时是否将 CSS 元素应用于我的页面。我可以很好地检查复选框属性并查看它是否被选中,但是我必须执行的另一个测试是检查在选中复选框后图像是否已突出显示。

目前,经过几个小时的搜索,我还没有找到任何有用的东西。有没有人遇到过您必须克服的问题,如果是这样,您是如何解决的。

提前致谢

0 投票
5 回答
14666 浏览

testing - 学习小黄瓜的推荐阅读

我希望学习Gherkin,以便可以将其与specflow一起使用;我正在寻找可以在火车上阅读的文件,例如打印在纸上。

我在网上能找到的只是简短的、不连贯的描述,它们不能讲述故事,需要在网页之间多次点击才能阅读。

(如果里面有很多好的小黄瓜内容,我不介意买一个好的)

0 投票
6 回答
8565 浏览

.net - 我怎样才能让 specflow 很好地处理日期/时间?

我希望能够编写这样的测试:

如何进行测试的规范流方面?

编辑:相同的步骤定义如何同时处理“31 天”和“2 年时间”

0 投票
1 回答
2417 浏览

cucumber - 我在哪里可以找到如何最好地使用 Gherkin 标签?

我一直在使用 SpecFlow 进行验收测试。这使用 Gherkin(DSL Cucumber 使用)。它包括一个有趣的功能,称为“标签”。我可以看到其使用的实用性,但不确定在 BDD 中使用标签的良好实践是什么。

我在 Google 上四处寻找帮助,但不幸的是,包含“标签”这个词与许多非 Gherkin 标签匹配(就像这个页面上的那些!)

我希望在 Cucumber wiki 上找到一些帮助,但标签主题尚未编写。

我发现声明“您可以使用标签将功能和场景组合在一起,独立于您的文件和目录结构”但恐怕我不知道这意味着什么!

0 投票
1 回答
3108 浏览

cucumber - SpecFlow——在不同类中使用相同正则表达式的步骤(给定)不独立执行

我有两个类(A 类和 B 类)都标有 [Binding]。目前我正在为每个功能使用一个类。A 类和 B 类都有一个如下所示的步骤:

当我为 A 类中定义的功能运行场景,并且测试运行程序执行上述步骤时,B 类中的匹配步骤将被执行。

“步骤”也是全球性的吗?我以为只有“钩子”方法是全局的,即BeforeScenario,AfterScenario。我不希望“Given”、“Then”和“When”出现这种行为。有没有什么办法解决这一问题?我尝试将这两个类放在不同的名称空间中,但这也不起作用。

另外,如果我将每个“Given”放在单独的类中,我是否可能会通过希望每个“Given”独立来滥用 SpecFlow?

0 投票
4 回答
3165 浏览

.net - 处理 SpecFlow 中的多个细微变化

大家好 我们正在开发一个可通过 SOAP 和 REST(xml 和 JSon)获得的 Web 服务。我们的 specflow 功能基本相同,即:

所有这些特性都需要针对 SOAP 接口、REST/Xml 接口和 REST/JSon 接口进行测试。

在 cucumber 中,可以使用 -R 来运行功能来指示步骤文件的位置,但是在 SpecFlow 中,我还没有找到绕过步骤文件的方法,因此我可以让相同的功能运行不同的步骤。

我宁愿不必为每个场景编写 3 次以更改要使用的步骤实现。

所以,有两个问题:1)我如何为预期完全相同的场景的 3 个不同接口运行 3 次功能?2)如何每次选择正确的步骤文件?

解决(1)可能会解决(2)。

0 投票
2 回答
203 浏览

cucumber - 如何检查黄瓜没有任何变化?

我尝试使用 cucumber/gherkin(实际上是 specflow)测试的业务场景是,给定 Web 表单上的一组输入,我提出请求,并且需要确保(在某些条件下)结果是返回时,一个特定的字段没有改变(在其他条件下,它确实)。例如

鉴于我在数据输入屏幕上当我选择“不更新 frobnicator”并提交表单并显示结果然后 frobnicator 没有更新

我将如何编写“fobnicator 未更新”步骤?

一种选择是在“我提交表单”之前运行一个步骤,其内容类似于“我记得 frobnicator 的值”,但这有点垃圾 - 这是实现细节的可怕泄漏。它分散了测试的注意力,并且不是业务描述的方式。事实上,任何人看到这样的台词,我都必须解释它。

有没有人对如何更好地实现这一点有任何想法,理想情况下是书面的?