从excel读取数据并使用specflow写入功能文件

时间:2015-02-21 09:51:18

标签: c# automated-tests specflow import-from-excel

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

例如:

当我在产品编号为XXXXX

1234567中获得客户产品时

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

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

所以我想基本上能够通过读取execel文件并写入我的功能文件来更改输入数据。这是否已经完成,是否可能?我需要安装某种插件吗?

2 个答案:

答案 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();   
}