如何在Cucumber中创建和使用通用功能文件?

时间:2019-09-16 12:20:35

标签: javascript cucumber

我正在使用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

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

1 个答案:

答案 0 :(得分:1)

只需将您的通用步骤移到单独的step def文件中,然后删除所有重复的step实施(step defs)。 Cucumber将从您的step_definitions文件夹中的所有文件中提取step def,因此,哪个文件保存了实现都无关紧要。但是,最好的做法是在单独的step def文件中维护通用功能。

假设您有以下3个步骤。

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

现在,在开发阶跃定义时,您不必为它们全部编写3种不同的实现,而是只需开发一个以变量为参数的阶跃定义,如下所示。

您的步定义应该看起来像这样

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

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