我正在使用Cucumber来帮助定义我正在进行的一些测试,但是应用程序越来越大,我需要更好的结构。
project
| feature_files
| | app1.js
| | app2.js
| | app3.js
| | ...
| step_definitions
| ...
所有应用程序都以相同的方式开始测试,在起始页中,您可以输入变量并单击链接。问题在于Cucumber抱怨multiple step definitions match
,因为这些开始步骤是在每个功能文件中定义的。
经过一些研究,看来这是有可能的,但是我找不到有关如何实现它的JavaScript解决方案。 This solution is in Java和this SO answer gives a good idea of how to organize my folder structure。
如何实现可在多个功能文件中重复使用的通用功能文件?
答案 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中实现处理不同应用程序的逻辑。