Specflow参数化Table的用法


Specflow参数化Table的用法

1.feature 文件中添加table数据

在scenario下设置table,如下:

Scenario: How to add Table params
  Given User login
  When User input some table params
  |header1|header2|header3|
  |row11|row12|row13|
  |row21|row22|row23|

2.step中将table转化为datatable

可以将table转换成DataTable,方便存储

public DataTable ToDataTable(Table table){
  var dataTable = new DataTable();
  foreach(var header in table.Header){
    dataTable.Columns.Add(header);
  }
  foreach(var row in table.Rows){
  //创建dataTable的行对象
    var newRow =dataTable.NewRows();
    foreach(var header in table.Header){
    //每行逐列添加数值
      newRow.SetField(header,row[Header]);
    }
    dataTable.Rows.Add(newRow);
  }
  return dataTable;
}

3.dataTable的使用:

采用二维数组取值方法:

using TechTalk.SpecFlow
...
[When("User input some table params")}
public void Userinputsometableparams(Table table){
  Datatable featureTable = ToDataTable(table);
  //判断第1行第2列值为1
  Assert.AreEqual(featureTable.Rows[0][1],1);
}