繁体   English   中英

如何使用 mstest 或 nunit 将 DataTable 用作我的测试用例的数据源?

[英]How can i use DataTable as a data source for my test case using mstest or nunit?

我有一个包含数据的数据表,我想使用数据表作为我的测试用例的参数作为数据驱动的测试。

任何测试框架 (MsTest/Nunit) 建议都可以使用 c# 作为脚本语言。

设想:-

我需要从 TFS 获取测试数据,我可以检索它并将其存储在数据表中。 一旦我保存在数据表中,我需要在我的测试用例中使用相同的数据表作为参数,以便我的测试用例针对所有参数运行。

    [DataTestMethod]
    [WorkItem(13)]
    public void GetTestValuesFromTestParameter()
    {
        //Code to get the data from TFS
       var method = MethodBase.GetCurrentMethod();
       var attr = (WorkItemAttribute)method.GetCustomAttributes(typeof(WorkItemAttribute), true)[0];
       GetTableItemsFromTestCase(workItemId);
    }

    private DataTable GetTableItemsFromTestCase(int workItemId)
    {
        //Return the data table items from TFS
    }

假设 TFS 中的测试用例有 2 个参数 [Name,FirstName],我将准备带有值的测试数据

//////Data table Start /////
   [Name] [FirstName] 
 1. ["QWERTY","LAST"] 
 2. ["TEST","TEST"] 
//////Data table END /////

现在我有一个包含 2 行的数据表。 测试用例应该使用来自数据表的 2 个输入值运行(即,.e-> 'QWERTY' 和 'TEST')。

工作项属性是在 TFS 中获取测试用例 ID 的映射,它将从 TFS 获取数据。

我很震惊,需要关于如何将数据表传递给测试用例的帮助。

这种特殊情况需要一个自定义的ITestDataSource

数据源将从 TFS 获取数据并将该数据传递给测试用例。

public class WorkItemAttribute : Attribute, ITestDataSource {
    private readonly int workItemId;

    public WorkItemAttribute(int workItemId) {
        this.workItemId = workItemId;
    }

    public IEnumerable<object[]> GetData(MethodInfo methodInfo) {
        var dataTable = GetTableItemsFromTestCase(workItemId);            
        yield return new object[] { dataTable };
    }

    private DataTable GetTableItemsFromTestCase(int workItemId) {
        //Return the data table items from TFS
    }

    public string GetDisplayName(MethodInfo methodInfo, object[] data) {
        if (data != null)
            return string.Format(CultureInfo.CurrentCulture, "{0} WorkItem {1} - ({2})", methodInfo.Name, workItemId, string.Join(",", data));

        return null;
    }
}

这就像您自己的DynamicDataDataRow属性版本

然后测试可以使用数据源,如

[DataTestMethod]
[WorkItem(13)]
public void GetTestValuesFromTestParameter(DataTable data) {
    //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM