我目前正在使用specflow进行单元测试,但是我的复杂性在于我想在运行测试之前从excel电子表格中读取(检索)我的输入数据。
例如:
当我在产品编号为XXXXX
1234567
中获得客户产品时
然后返回以下产品详细信息
| Model | Product Type | SerialNumber |
| blah | zzzzz | 12345 |
所以我想基本上能够通过读取execel文件并写入我的功能文件来更改输入数据。这是否已经完成,是否可能?我需要安装某种插件吗?
答案 0 :(得分:5)
您可以实现自己的步骤定义,从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团队维护。你可以免费试用。
答案 1 :(得分:1)
按如下所示创建功能文件:
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的Excelsheet)
在页面对象文件中编写测试方法,如下所示:
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();
}