问题标签 [scenarios]

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 回答
331 浏览

bdd - BDD 中的场景可能没有When 吗?

我目前正在使用 SpecFlow 学习/测试 BDD,效果很好!

在我选择问我的问题之前,我已经阅读了this one,我觉得我不得不问我的问题,尽管同样的问题已经得到解决,因为Exception没有提到的场景。

我实际上正在测试这种情况:

我认为在When方法中留下注释是正确的,这样业务需求就不会缺少任何信息,并且在后面的代码上,我通过注释明确了我的意图。

你怎么看?任何其他想法为什么我不应该这样做?

0 投票
1 回答
271 浏览

tdd - 定义 Gherkin Given 和 When 语句时避免代码重复

我提出了一个类似的问题,但措辞很糟糕,所以并没有真正得到我想要的答案。这是另一个尝试:

所以我很欣赏 Cucumber 的 Gherkin Given 语句类似于测试用例的前置条件。我很欣赏一些人认为这些不应该涉及用户交互,但为了这个问题,我将不同意这种观点。

以下是三种情况:

所以我很欣赏上面的版本 B 从业务用户的角度来看比版本 A 更好。但是,从代码重用的角度来看,版本 B 肯定需要 Given 语句来重复在第一个场景的大多数情况下使用的代码?

干杯,

查理

0 投票
4 回答
8868 浏览

testing - SpecFlow - 重试失败的测试

有没有办法实现一个AfterScenario钩子以在失败的情况下重新运行当前测试?

像这样的东西:

注意:我项目中的测试组合在 Ordered 测试中,并通过MsTest执行。

0 投票
4 回答
571 浏览

selenium-webdriver - 我如何在长场景中使用 Selenium?

我被要求记录一个长期运行的场景,其中涉及患者从注册到计费的整个生命周期的功能页面。我尝试了 Selenium IDE,但它很不稳定,给出了刚刚记录的重放错误。当我尝试 Selenium 2 时,我遇到了 DOM 和 XPATH 问题。我相信 Selenium 2 是用于单元测试的。可以扩展到 5 分钟场景记录和回放的开源替代方案是什么?我知道这是一个主观问题,之前可能已经问过,但选项可能已经改进。

0 投票
1 回答
838 浏览

csv - Cucumber 示例在不同的功能/场景中重用

我一直在使用黄瓜一段时间,我偶然发现了一个问题:

实际问题:

是否有解决方案可以使用黄瓜作为示例从单个文件/数据库中导入示例?或者,有没有办法在已经同步的情况下定义一个变量作为示例?或者,当我启动功能文件/场景时,是否可以选择将示例作为变量发送?

问题:

我有几个场景,我想一遍又一遍地使用完全相同的例子。

这听起来很简单,但是示例表非常大(更具体地说,它包含了世界上所有的国家及其相应的大陆)。因此重复它会很麻烦,特别是如果表需要更改(我需要单独更改表的所有实例)

并发症:

我有一个重新运行函数,它知道特定示例何时失败并在测试完成后重新运行它。

限制:

我不想编辑我的重播文件

有关的:

我注意到这里已经有关于从 csv 导入它的公开讨论: Importing CSV as test data in Cucumber?

然而,这个讨论对我来说是无效的,因为我有 rerun 函数,它只知道只能使用示例,而那里建议的解决方案破坏了它。

谢谢!

0 投票
4 回答
1289 浏览

ruby - 我如何在 Cucumber 中最好地表达这种与时间相关的场景?

我一直在尝试在 Ruby 中学习 Cucumber,我认为最好的方法是制作我自己的项目。但是,我想知道什么是好的“给定”条款。

据我了解,“Given”基本上是一个设置,“When”是被测函数,“Then”是预期结果。

例如,假设我正在制作一个基于实体踏入熔岩的 Minecraft 场景。我当前的 GWT 如下所示:

然而,这个“给定”步骤似乎相当“关闭”。我必须站在熔岩块旁边才能使这种情况起作用,这是没有意义的。类似地 - 我将如何为应该总是发生的场景编写(和测试)GWT - 例如,我如何确保只要我的实体留在熔岩中,它就会继续受到伤害?我发现很难编写代码来测试一个实体在熔岩中停留了多长时间。系统如何知道实体在熔岩中呆了多长时间?在我看来,测试这类事情几乎需要我写下世界其他地方,以便能够说“这个实体已经在熔岩中呆了 x 秒,推进模拟,我损失了多少马力”

想法?

0 投票
1 回答
1616 浏览

ruby - 如何用表格在黄瓜步骤内写表格

我正在为 QA 工程师编写场景,现在遇到了步骤封装等问题。

这是我的场景:

每个步骤对人们来说都很重要,他们会使用我的步骤。我需要自动化这些步骤并重复 100 次。所以我决定创建一个新的步骤,运行 100 次。

  1. 第一个变体是创建带有其他步骤的步骤,例如:

但是这个版本不合适,因为:

  • 会使用它的人,不会明白里面执行了哪些步骤
  • 有时像这样的步骤名称很长

    1. 第二个变体是使用参数表中的其他步骤创建步骤:

对于将使用我的步骤和场景的人来说,这将很容易理解。

但我也有一些带参数的步骤,

我需要创建类似两层表的东西:

在我的情况下,这是最好的变体。但由于黄瓜无法毫无错误地解析它(它作为黄瓜代码不正确)。

如何修复步骤的最后一个示例?(用粗体标记)

黄瓜有什么仪器,对我有帮助吗?

您能否提出一些建议您的解决方案类型?

有人有类似的问题吗?

0 投票
1 回答
4832 浏览

naming - 更新 SpecFlow 场景大纲变体的名称

我有这个功能文件:

我的问题是,运行后,每个示例都标记为variant #

有没有办法命名每个示例行实际测试的内容,以便在报告中,我们更好地了解测试的内容,而不仅仅是:

我正在努力帮助我们的测试人员获得更有意义的报告;他们编写多个示例通常是有原因的,并且他们希望以某种方式显示该示例的原因。

0 投票
1 回答
916 浏览

.net - 排序 BeforeScenario 属性挂钩的执行

我有一个带有一些标签的功能文件:

MyFeature.feature:

并绑定cs文件:

MySteps.cs:

SpecFlow 以无序的顺序执行 BeforeScenario。

是否可以始终在 SomeAction 标记之前设置执行顺序 RestoreDB 标记?

0 投票
1 回答
471 浏览

database - 基于数据库场景的应用程序是如何开发的?

您正在构建一个使用数据库的应用程序。例如,它是一种营销/销售软件。该应用程序允许用户创建场景,一个用户可以选择不同的路径来提高公司的销售额,其他用户可以选择另一条路径。每个用户的场景都保存在数据库中,他们可以随时从数据库中加载他们的场景并继续工作。问题是:应用程序如何改变数据库?例如,有一个表“sales”。用户 1 有一个场景,他在“销售”表中的值不同,用户 2 的值可能完全不同。应用程序会为每个场景创建不同的销售表副本吗?比如sales_scenario_1sales_sceneario_2?这些应用程序是如何构建的?