使用Nunit控制台通过测试案例参数[英] pass test case parameters using nunit console

本文是小编为大家收集整理的关于使用Nunit控制台通过测试案例参数的处理方法,想解了使用Nunit控制台通过测试案例参数的问题怎么解决?使用Nunit控制台通过测试案例参数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在使用 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文件中.也许不是最好的解决方案,但我实现了自己的目标 - 不要在代码中编写参数.

本文地址:https://www.itbaoku.cn/post/1794066.html