Cucumber Gherkin:有没有办法让你的小黄蜂场景在excel表中编写和管理,而不是像IntelliF或Eclipse中的.feature文件,如SpecFlow + Excel(截图链接如下)?我正在使用Cucumber-JVM和selenium作为我的自动化框架。
PS:使用Excel工作表作为功能文件是否有任何利弊?
不,Gherkin是Cucumber理解的语言。
如果您想在等式中引入Excel,您可能想要使用其他一些工具。或者实现自己的功能,读取Excel并根据内容做一些有趣的事情。
您可以编写一个带有.csv
文件的编译器,并通过写入将它们转换为要素文件。
这是我在JS中匆匆忙忙做的事情。
首先它删除空行,然后搜索缺少冒号的关键字(它可能发生在路上的某个地方)并添加它们,检查示例表,根据你的照片,这很容易做,因为它是只检查起始字符是否为逗号(删除空行后,关键字始终在第一部分)。最后,删除其余的逗号。
我相信,唯一的区别是我的包括在黄瓜中创建有效场景所需的Feature:
和Scenario:
/ Scenario Outline
线。
是的有可能的。您只需要先将csv编译成功能文件。
function constructFeature(csvData) {
let data = csvData,
blankLineRegex = /^,+$/gm,
keywordsWithCommasRegex = /(Feature|Scenario|Scenario Outline|Ability|Business Need|Examples|Background),/gm,
examplesTableRegex = /^,.*$/gm;
data = data
.toString()
.replace(blankLineRegex, "");
data.match(keywordsWithCommasRegex).forEach((match) => {
data = data.replace(match, match.replace(',', ":,"))
});
data.match(examplesTableRegex).forEach((match) => {
data = data.replace(match, match.replace(/,/g, "|").replace(/$/, "|"))
});
data = data.replace(/,/g, " ");
data = data.replace(/\ +/g, " ");
console.log(data);
}
let featureToBuild = `Feature,I should be able to eat apples,,
,,,
Scenario Outline,I eat my apples,,
Given,I have ,<start>,apples
When,I eat,<eat>,apples
Then,I should have,<end>,apples
,,,
Examples,,,
,start,eat,end
,4,2,2
,3,2,1
,4,3,1`
constructFeature(featureToBuild);
只需获取该输出并将其推送到一个恰当命名的功能文件中。
这是原始的excel文档:
使用Excel的缺点是你将使用Excel。
使用功能文件作为项目的一部分的好处是:*它们受版本控制(假设您使用git或类似)*您使用Cucumber插件的IDE可以帮助您: - 例如,IntelliJ(具有免费的社区版)将突出显示尚未实现的任何步骤,或建议已实施的步骤 - 您还可以在运行测试时从功能文件*生成步骤定义,您将看到功能文件是否以及在何处违反Gherkin语法
TL; DR:将特征文件与代码库一起使用可以更容易地编写和实现场景!
另外,像@Thomas Sundberg所说,Cucumber无法阅读Excel。 Cucumber只能处理要素文件,因此您必须在某些时候将场景从Excel复制到要素文件。
因此,Cucumber无法满足您的要求。
如果您想从Excel中读取测试用例,则必须构建自己的数据驱动测试。例如,您可以使用Apache POI。
有一个解决方案,只在Excel中执行方案和数据。但是,我已尝试与Cucumber一起使用,而不是任何测试应用程序。您可以尝试看看是否要使用它:Acceptance Tests Excel Addin (for Gherkin)
但是,不能将Excel作为工作簿或多个工作簿进行源代码控制,但很难维护修订版。
但是,Excel为您提供了管理数据的灵活性。您还必须考虑不要在多个位置复制测试信息和数据。所以检查一下,可能会有所帮助。