从 excel 读取数据并使用 specflow 写入特征文件

Posted

技术标签:

【中文标题】从 excel 读取数据并使用 specflow 写入特征文件【英文标题】:Read data from excel and write to feature file using specflow 【发布时间】:2015-02-21 09:51:17 【问题描述】:

我目前正在使用 specflow 进行单元测试,但我的复杂性在于我想在运行测试之前从 excel 电子表格中读取(检索)我的输入数据。

例如:

当我在XXXXX 获得产品编号为1234567 的客户产品时

然后返回以下产品详细信息

| Model    | Product Type | SerialNumber |
| blah     | zzzzz        | 12345        |   

所以我希望基本上能够通过读取 execel 文件并写入我的功能文件来更改输入数据。这以前做过吗?有可能吗?我需要安装某种插件吗?

【问题讨论】:

您考虑过使用场景背景吗?如果是这样,为什么他们在这种情况下不工作?您的问题听起来像是场景背景的教科书案例。 【参考方案1】:

您可以实现自己的步骤定义,从 Excel 工作表中读取数据。执行此操作的最简单方法是将 Excel 工作表名称作为步骤参数传递,然后执行代码以从 Excel 中读取数据。要了解有关编写步骤定义的更多信息,请从这里开始:http://www.specflow.org/documentation/Step-Definitions/

或者,您可以安装 SpecFlow+Excel,它以多种不同方式为您提供开箱即用的功能(例如,将 Excel 文件链接到以纯文本功能文件编写的 Gherkin 场景,或编写和执行整个 Gherkin Excel 中的场景)。 SpecFlow+Excel 还支持在(不同的)Excel 文件中只指定场景大纲示例行,这不仅是在步骤定义中从 Excel 中读取数据,而且还影响使用 Excel 生成和执行场景。更多关于 SpecFlow+Excel 的信息可以在这里找到:http://www.specflow.org/plus/Excel/

免责声明:SpecFlow+Excel 是基于 SpecFlow 的商业插件,由 SpecFlow 团队维护。您可以免费试用。

【讨论】:

【参考方案2】:

如下创建特征文件:

Feature: Signin
Test the Login functionality 
Will verify the credentials working as expected
@mytag
Scenario Outline: Signin_Functionality
Given Present at Signin Page
And entered <username> and <password>
When I press signin button
Then verify that login is successfull

@source:LoginData.xlsx
Examples: 
| username | password |

(注意:创建名为 LoginData.xlsx 的 Excel 表,其中 Feature File 位于)

在页面对象文件中编写 TEST 方法如下:

   public void login(string username, string password)
       Username.SendKeys(username);
       Passwrd.SendKeys(password);
   

    public void ClickLogin()
        btnLogin.Click(); 
     

在步骤文件中调用上述方法如下:

 [Given(@"entered (.*) and (.*)")]
 public void GivenEnteredAnd(string username, string password)
 
    var signin = new LoginPage(driver);
    signin.login(username, password);
 

[When(@"I press signin button")]
public void WhenIPressSigninButton()

   var submit = new LoginPage(driver);
   submit.ClickLogin();   

【讨论】:

这是如何转换 Excel 工作表中的数据的?它如何知道在工作表中的何处查找数据。 Selenium Java 使用了 Apache POI,但使用这种方法如何从 Excel 读取数据 vijaypujar 在您的功能文件中使用“@source: filepath”。如果您的 Excel 工作表位于功能文件所在的位置,则无需编写整个路径。你只需要写@source:filename.xlsx @Jalprit,它是 Specflow+Excel 的一部分还是使用 Nuget 包进行 Specflow:外部数据。

以上是关于从 excel 读取数据并使用 specflow 写入特征文件的主要内容,如果未能解决你的问题,请参考以下文章

从 csv 文件读取数据并使用 phpspreadsheet 写入 excel

使用列名从excel中读取数据并插入到C#中的SQL表中

Python实用技巧:从Excel读取数据并绘制成图像

如何从 excel 中读取数据并推入 asp.net 中的数组?

从 .xlsx (Excel) 文件中读取数据并在数组中排列/管理或创建数组

从 SpecFlow 表中序列化 JSON