问题标签 [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 投票
2 回答
877 浏览

cucumber - 我应该如何在场景大纲中命名我的步骤

我有一些看起来像这样的 specflow 测试:

除了只有 2 个场景之外,我有 10 个非常相似的场景,都具有步骤类型,所以我想使用“场景大纲”。不幸的是,我很难想出一种可读的方式来重写我的步骤。

目前,我想出了这个,但看起来很笨重:

我也考虑过这一点,虽然它更干净,但它几乎没有传达意义

有没有人有更好的方法来参数化诸如“做”、“不做”、“应该”、“不应该”、“有”、“没有”之类的概念?此时,我正在考虑将所有内容保留为不同的场景,因为它更具可读性。

0 投票
2 回答
1413 浏览

ruby - Cucumber - 如何从这个 Gherkin 场景中删除数据重复?

我有以下小黄瓜场景:

第二行将电子邮件地址和密码传递给步骤定义,该步骤定义又将这些详细信息传递给 FactoryGirl 工厂。

基本上,我不确定如何从这种情况下删除这种重复的数据,我考虑过使用表,但看不到这有什么帮助,有人知道如何做到这一点吗?提前致谢!

0 投票
4 回答
10946 浏览

bdd - Gherkin "OR" 语法以减少 BDD 的重复

有谁知道实现这一目标的方法,或者他们认为这是一个好主意。在 Gherkin 中使用 OR 样式语法以减少重复但保持人类可读性(希望如此)。我正在考虑使用多个 OR 语句的每个组合扩展子句组合的情况。例如

这将作为 3 个测试运行,每个测试具有相同的给定,然后使用 OR 集中的一个 When。我想这可以通过使用带有When子句占位符的模板来实现,但我认为这更具可读性,并且可以允许在 Given 中使用 OR 来生成 nxm 测试。使用大纲,您仍然需要 nxm 行。

  • 有一个更好的方法吗
  • 显式复制和粘贴是更好的做法吗(我认为维护可能会变得混乱)
  • 其他框架是否支持这一点(我认为使用 FIT 你可以编写一个自定义表,但这似乎又是开销)

谢谢。

0 投票
1 回答
1268 浏览

bdd - 场景大纲:可能值数量有限的占位符

我对 BDD 比较陌生,我有一个关于场景大纲的问题。在互联网上查看样本时,我感觉占位符可以采用任何值。其域中的元素数量不受限制。是一个例子:

例如,占位符<start>可以是任何数字,因此值的数量是无限的。

在我的规范中,我必须处理可能具有四种状态之一(计划、正在进行、暂停和关闭)的合同。我的规范说我可以编辑计划中的合同,但我不能编辑具有其余三个状态之一的合同。

我想我会写一个名为“更新计划合同”的场景和一个场景大纲,其中合同的状态是占位符。

那是正确的方法吗?一个显式场景和一个参数化?或者我应该将场景大纲写成每种可能性的明确场景?我不确定,因为与互联网上的示例相反,合同的状态受到四个可能值的限制。

0 投票
2 回答
2061 浏览

selenium - 我们如何在 Gherkin 场景(SpecFlow/BDD/Selenium)中实现“Given”?

我们正在应用 BDD 并使用 SpecFlow 和 Selenium。Gherkin 中指定了验收标准。

我对 Given 子句有疑问。

一个例子可能是...

  • 鉴于我在订单详情页面
  • 当我提交订单时
  • 然后我看到订单摘要

因此,对于“鉴于我在订单详细信息页面”,我们必须登录并准备好提交订单。但是我们如何达到这一点呢?

如果我们已经有相关的现有 SpecFlow 步骤,我们可以使用这些(通过 Selenium)来达到正确的点 - 像这样......

  • 鉴于我是注册用户
  • 我在登录页面
  • 我使用我注册的用户名和密码登录
  • 我创建了一个新订单
  • 我搜索 XYZ 产品
  • 我将产品添加到订单中
  • 然后我选择订单详情页面
  • 当我提交订单时
  • 然后我看到订单摘要

我们甚至可以将所有这些步骤放在“鉴于我在订单详细信息页面”下的步骤代码中

但是,我们使用 Selenium 来实现 Given 是否正确?或者我们是否应该找到某种方法来设置会话/数据库中的所有相关状态/数据,而无需通过 UI?

我怀疑这里没有对错。我不得不说它对我们来说非常有效,但我们一直在寻求改进我们的方法。所以很想听听任何有实际经验的人的意见。

我希望 Stack Overflow 是正确的论坛(不禁认为它不是 - 如果是这样,请不要把我击倒!)......

0 投票
1 回答
897 浏览

ruby-on-rails - 黄瓜中的可选参数匹配

如何在黄瓜中实现可选参数。

我有步骤定义

这是由

如何制作我的步骤定义,以便它可以由其中任何一个触发

0 投票
1 回答
2431 浏览

bdd - 在编写 BDD 功能时,我应该将之前的用户交互放入 Given 步骤还是 When 步骤?

我正在尝试编写多步骤业务流程的需求(通过向导)。我有很多场景,用户与一个屏幕的交互会改变是否允许您在另一个屏幕上选择选项。

例如(我掩盖了实际的业务,但步骤的过程和形式几乎相同):

但在Gherkin wiki上,建议您:

避免在给定的情况下谈论用户交互

不过,他们继续例外:

登录一个用户(无交互推荐的一个例外。“发生得更早”的事情是可以的)。

该页面上还说:

When 步骤的目的是描述用户执行的关键操作

如果您有很多 UI 交互,什么属于 Given,什么属于 When?

在我的第一个场景中,select Use PD需要 UI 交互,因为它是创建新维修订单的向导的一部分。然而,这是 PD 过滤器可见的前提条件,并且在用户进入 Select Technician 页面时触发。

第一种情况可能没有那么糟糕,但第二种情况会加剧问题。当您点击搜索时会触发搜索,但必须完成许多 UI 交互才能导航到该页面。其中一些交互也不能被掩盖,因为Use PD必须选择搜索过滤器才能出现。但这些 UI 交互并不是场景的关键操作

0 投票
1 回答
1041 浏览

c# - Specflow:具有不同可配置步骤的相同场景

我有一个功能,并且正在寻找一种在每个环境中执行不同的方法。就像我可能有一个环境可以在本地测试东西,而另一个环境会影响远程服务器。使用范围绑定我可以做到这一点,但它需要复制场景,然后将标签应用于每个场景。

例如:

相反,有没有一种方法可以在功能中只列出一次场景,然后我有某种全局标签可以允许正确过滤步骤定义?

谢谢!

0 投票
1 回答
588 浏览

specflow - 如何将 Xunit TraitAttribute 添加到由 specflow 生成的单元测试中

我正在将 Specflow 与 Xunit 一起使用,我想要的是(在幕后)生成的单元测试Xunit.TraitAttribute添加到它们中。Gherkin 和 SpecFlow 有可能吗?

0 投票
1 回答
145 浏览

windows-phone-7 - WP7测试改变方向

我使用 Expensify 进行测试。它是一个很好的测试工具。我需要在功能文件中更改手机的方向。我怎么做?