我正在尝试使用这里介绍的Excel数据读取器http://fabiouechi.blogspot.fi/2010/07/excel-data-driven-tests-with-nunit.html来读取NUnit测试中的数据。
我的测试数据有几列--比如状态、运行、压力、p_prev、温度--以及excel文件中的200多行。
我使用下面的代码来读取测试用例。
public static IEnumerable<TestCaseData> TestCaseData_T3003
{
get
{
var testcases = ExcelTestCaseDataReader.New()
.FromFileSystem(@"C:\Tests\Test data.xlsx")
.AddSheet("T3003")
.GetTestCases(delegate(string sheet, DataRow row, int rowNum)
{
var testName = sheet + rowNum;
//var category = Convert.ToString(row["col1"]);
IDictionary testDataArgs = new Hashtable();
var testData = new TestCaseData(testDataArgs).SetName(testName);
return testData;
}
);
foreach (TestCaseData testCaseData in testcases)
{
yield return testCaseData;
}
}
}
public List<TestCaseData> GetTestCases(Func<string, DataRow, int, TestCaseData> testCaseDataCreator)
{
var testDataList = new List<TestCaseData>();
IExcelDataReader excelReader = GetExcelReader(ExcelFile);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
foreach (var sheet in Sheets)
{
var sheetTable = result.Tables[sheet];
var i = 0;
foreach (DataRow dr in sheetTable.Rows)
{
testDataList.Add(testCaseDataCreator(sheet, dr, i));
i = i + 1;
}
}
excelReader.Close();
return testDataList;
}而使用excel数据的实际测试仍然是非常原始的。
[Test]
[TestCaseSource("TestCaseData_T3003")]
public void T3003_Excel(IDictionary testData)
{
//do the assertions here
}问题是,如何访问测试过程中的测试数据?如何引用列“状态”或“压力”中的值?
Nunit在我的测试数据中查找所有行,因为它运行测试214次。但是,当我在T3003_Excel中调试代码和bread时,属性testData.Count为零。哈希表testData.Keys的键集合的长度也是如此。(testData.Keys.Count = 0)
有什么建议或帮助吗?
发布于 2014-05-28 15:06:43
您只是在测试用例数据中添加一个空的HashTable;实际上需要在其中添加一些内容。你的代表应该是这样的:
...
.GetTestCases(delegate(string sheet, DataRow row, int rowNum)
{
var testDataArgs = new Dictionary<string, object>();
foreach (DataColumn column in row.Table.Columns)
{
testDataArgs[column.ColumnName] = row[column];
}
var testName = sheet + rowNum;
return new TestCaseData(testDataArgs).SetName(testName);
}https://stackoverflow.com/questions/23912308
复制相似问题