![](/img/trans.png)
[英]How can I use an NUnit test case that is dependent on TestSetup method having run?
[英]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;
}
}
这就像您自己的DynamicData
或DataRow
属性版本
然后测试可以使用数据源,如
[DataTestMethod]
[WorkItem(13)]
public void GetTestValuesFromTestParameter(DataTable data) {
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.