从 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 中读取数据并推入 asp.net 中的数组?