C# 使用nunit控制台通过测试用例参数
我正在使用Nunit和数据驱动测试方法开发测试。我有两个参数的测试方法:xlsx文件的路径和工作表名称。 当我在C# 使用nunit控制台通过测试用例参数,c#,nunit,data-driven-tests,nunit-console,C#,Nunit,Data Driven Tests,Nunit Console,我正在使用Nunit和数据驱动测试方法开发测试。我有两个参数的测试方法:xlsx文件的路径和工作表名称。 当我在TestCase属性中传递参数时,它在Visual Studio中工作得非常完美,例如,当我想要运行3个测试用例时,必须编写如下内容: [TestCase(@"pathToFile.xlsx", "TestCase1")] [TestCase(@"pathToFile.xlsx", "TestCase2")] [TestCase(@"pathToFile.xlsx", "TestCas
TestCase
属性中传递参数时,它在Visual Studio中工作得非常完美,例如,当我想要运行3个测试用例时,必须编写如下内容:
[TestCase(@"pathToFile.xlsx", "TestCase1")]
[TestCase(@"pathToFile.xlsx", "TestCase2")]
[TestCase(@"pathToFile.xlsx", "TestCase3")]
public void performActionsByWorksheet(string excelFilePath, string worksheetName)
{
//test code
}
我希望使用Nunit控制台运行测试用例并传递参数(不要在代码中编写参数)
有可能实现吗?如果使用NUnit 3,则可以使用TestContext。参数属性:
[Test]
public void performActionsByWorksheet()
{
string excelFilePath = TestContext.Parameters["excelFilePath"];
string worksheetName = TestContext.Parameters["worksheetName"];
TestContext.WriteLine(excelFilePath);
TestContext.WriteLine(worksheetName);
}
和--params命令行参数:
nunit3-console.exe path/to/your/test.dll --params=excelFilePath=testPath;worksheetName=testName
我使用
TestCaseSource
测试代码为许多测试用例找到了解决方法:
[Test, TestCaseSource("testData")]
public void performActionsByWorksheet(string excelFilePath, string worksheetName)
{
Console.WriteLine("excel filePath: {0}", excelFilePath);
Console.WriteLine("worksheet Name: {0}", worksheetName);
}
从csv文件获取测试数据:
static object[] testData()
{
var reader = new StreamReader(File.OpenRead(@"TestCases.csv"));
List<object[]> rows = new List<object[]>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
rows.Add(values);
}
return rows.ToArray<object[]>();
}
静态对象[]testData()
{
var reader=newstreamreader(File.OpenRead(@“TestCases.csv”);
列表行=新列表();
而(!reader.EndOfStream)
{
var line=reader.ReadLine();
var值=行分割(',');
行。添加(值);
}
返回rows.ToArray();
}
我将所有要运行的测试用例(文件路径和工作表名称)存储在csv文件中。也许不是最好的解决方案,但我实现了我的目标——不在代码中编写参数。非常感谢!它适用于1组参数。如果我想像我的问题中那样运行更多的测试用例呢?@kotoj,将它们作为带分隔符的字符串传递到一个参数中,你能帮助我使用AutoRun().Execute()执行吗。我使用category属性
.Execute运行测试(新字符串[]{--where=cat=testname“})
现在如何在此中添加--params
?从3.10开始,您应该切换到--testparam:Key=Value,而不是--params。这是为了避免半列的问题,例如连接字符串中的问题。