在 Excel 工作表中,我们有 100 个测试用例,我们希望使用 TestCaseSource 从测试用例列表中加载特定的测试用例
我尝试加载测试用例,如下所示
TestCaseSource.LoadTestCases(excelName, sheetName).FirstOrDefault(x => x.TestCaseName == TestCaseName)
它仅加载第一个测试用例或默认测试用例。但我想从工作表的任意行加载单个测试用例
TestCaseSource 应根据您的参数生成 100 个测试用例。
class TestSuite
{
[TestCaseSource("LoadTestCases")]
public void GenerateTestCases(ExcelData data){
//logic
}
private static IEnumerable<TestCaseData> LoadTestCases()
{
var rows = //logic for mapping excel rows for some model
foreach(var row in rows)
yield return new TestCaseData(row).SetTestName(row.Name);
}
如果您只想从 TestCaseSource 获取单个测试用例,您可以在 appsettings 中存储 excelName 和sheetName 等参数,并且从 CI 中您将能够更改参数值,并且在构建过程中将出现您的单个测试用例。
我不推荐这种方法。只需根据源“excel”生成 100 个或更多测试用例,如果您只想执行单个测试,只需使用过滤器进行测试执行,例如: dotnet test --filter Name=YourTestCaseNameFromExcel