黄瓜小黄瓜:有没有办法让你的小黄瓜功能在excel表中编写和管理,而不是IntelliJ或eclipse中的.feature文件?

问题描述 投票:-2回答:4

Cucumber Gherkin:有没有办法让你的小黄蜂场景在excel表中编写和管理,而不是像IntelliF或Eclipse中的.feature文件,如SpecFlow + Excel(截图链接如下)?我正在使用Cucumber-JVM和selenium作为我的自动化框架。

Excel based Scenarios

PS:使用Excel工作表作为功能文件是否有任何利弊?

selenium bdd ui-automation cucumber-jvm gherkin
4个回答
1
投票

不,Gherkin是Cucumber理解的语言。

如果您想在等式中引入Excel,您可能想要使用其他一些工具。或者实现自己的功能,读取Excel并根据内容做一些有趣的事情。


1
投票

您可以编写一个带有.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文档:

The original excel document


0
投票

使用Excel的缺点是你将使用Excel。

使用功能文件作为项目的一部分的好处是:*它们受版本控制(假设您使用git或类似)*您使用Cucumber插件的IDE可以帮助您: - 例如,IntelliJ(具有免费的社区版)将突出显示尚未实现的任何步骤,或建议已实施的步骤 - 您还可以在运行测试时从功能文件*生成步骤定义,您将看到功能文件是否以及在何处违反Gherkin语法

TL; DR:将特征文件与代码库一起使用可以更容易地编写和实现场景!

另外,像@Thomas Sundberg所说,Cucumber无法阅读Excel。 Cucumber只能处理要素文件,因此您必须在某些时候将场景从Excel复制到要素文件。

因此,Cucumber无法满足您的要求。

如果您想从Excel中读取测试用例,则必须构建自己的数据驱动测试。例如,您可以使用Apache POI。


0
投票

有一个解决方案,只在Excel中执行方案和数据。但是,我已尝试与Cucumber一起使用,而不是任何测试应用程序。您可以尝试看看是否要使用它:Acceptance Tests Excel Addin (for Gherkin)

但是,不能将Excel作为工作簿或多个工作簿进行源代码控制,但很难维护修订版。

但是,Excel为您提供了管理数据的灵活性。您还必须考虑不要在多个位置复制测试信息和数据。所以检查一下,可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.