【问题标题】:How do you create and use common feature files in Cucumber?您如何在 Cucumber 中创建和使用常用功能文件?
【发布时间】:2019-09-16 12:20:35
【问题描述】:

我正在使用 Cucumber 来帮助定义我正在处理的一些测试,但是应用程序变得越来越大,我需要一个更好的结构。

project
|    feature_files
|    |   app1.js
|    |   app2.js
|    |   app3.js
|    |   ...
|    step_definitions
|    ...

所有应用程序都以相同的方式开始测试,有一个起始页面,您可以在其中输入变量并单击链接。问题是 Cucumber 抱怨 multiple step definitions match 因为这些开始步骤是在每个功能文件中定义的。

经过一些研究,这似乎是可能的,但我找不到关于如何实现它的 JavaScript 解决方案。 This solution is in Javathis SO answer gives a good idea of how to organize my folder structure

如何实现可以在多个功能文件中重复使用的通用功能文件?

【问题讨论】:

  • 您应该有一个步骤 def 并根据您的环境传递参数。请不要创建重复的步骤定义。
  • @supputuri 你能给我一个例子吗?我不明白你的意思是根据我的环境传递参数。
  • 您似乎正在寻找如何组织步骤定义,以便在多个功能文件中重用它们。对吗?

标签: javascript cucumber


【解决方案1】:

只需将常用步骤移动到单独的步骤定义文件中,并删除所有重复的步骤实现(步骤定义)。 Cucumber 将从位于您的step_definitions 文件夹中的所有文件中提取步骤 def,因此哪个文件包含实现并不重要。但是,最好在单独的步骤定义文件中维护常用功能。

假设您有以下 3 个步骤。

Given User navigates to "Application1" url
Given User navigates to "Application2" url
Given User navigates to "Application3" url

现在,在开发 step defs 时,您不必为所有它们编写 3 个不同的实现,而是只需开发一个 step def 并将方差作为参数,如下所示。

你的步骤定义应该是这样的

Given(/^User navigates to "([^"]*)" url$/), async function(app){
     // your logic goes here
});

现在在您的步骤定义中实现处理不同应用程序的逻辑。

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多