问题描述
我正在使用 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 Console 运行测试用例并传递参数(不要在代码中编写参数).
可以实现它吗?
推荐答案
如果您使用的是Nunit 3,则可以使用TestContext.Parameters属性:
[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文件中.也许不是最好的解决方案,但我实现了自己的目标 - 不要在代码中编写参数.
相关问答
相关标签/搜索