使用nunit控制台通过测试用例参数
本文关键字:测试用例 参数 nunit 控制台 使用 | 更新日期: 2023-09-27 18:09:40
我正在使用Nunit和数据驱动测试方法开发测试。我有2个参数的测试方法:路径到xlsx文件和工作表名称。当我在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[]>();
}
和我存储我想要运行的所有测试用例(文件路径和工作表名称)在csv文件中。也许这不是最好的解决方案,但我实现了我的目标——不用在代码中编写参数。