首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Excel读取NUnit测试数据-如何访问测试数据?

从Excel读取NUnit测试数据-如何访问测试数据?
EN

Stack Overflow用户
提问于 2014-05-28 12:59:17
回答 1查看 3.7K关注 0票数 2

我正在尝试使用这里介绍的Excel数据读取器http://fabiouechi.blogspot.fi/2010/07/excel-data-driven-tests-with-nunit.html来读取NUnit测试中的数据。

我的测试数据有几列--比如状态、运行、压力、p_prev、温度--以及excel文件中的200多行。

我使用下面的代码来读取测试用例。

代码语言:javascript
复制
        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数据的实际测试仍然是非常原始的。

代码语言:javascript
复制
    [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)

有什么建议或帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 15:06:43

您只是在测试用例数据中添加一个空的HashTable;实际上需要在其中添加一些内容。你的代表应该是这样的:

代码语言:javascript
复制
...
.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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23912308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档