我正在尝试使用列值作为测试的名称,以便所有行在 Visual Studio 的“测试资源管理器”窗格中逐行显示。
以下是我使用 CSV 文件中的数据的测试。我尝试使用“TestName”属性并切片(“{15:16}”)我想用作测试名称的字符串部分的默认名称。我现在肯定做得正确,因为它只是给了我方法名称的名称。
第二种方法是我的读操作。此外,我不喜欢将我的数据分配给变量然后必须传递它们。我真的在寻找一种更优雅的方法来解决读取和使用 CSV 数据进行命名和测试的问题,所以如果有人有任何经验或想法,我很想听听他们的意见。
如果我遗漏了任何可以进一步阐明我的目标的信息,请告诉我。
class MegaTests
{
[TestCase(TestName = "{15:16}")]
[Test, TestCaseSource("GetTestData")]
public void MyExample_Test(string TestName, string json, string ExpectedResult, string Environment, string ChannelMessage, string ChannelSubject, string MessageCenterMessage, string MessageCenterSubject)
{
Console.WriteLine(TestName + " " + json + " " + ExpectedResult + " " + Environment + " " + ChannelMessage + " " + ChannelSubject + " " + MessageCenterMessage + " " + MessageCenterSubject);
}
private static IEnumerable<string[]> GetTestData()
{
//using (var csv = new CsvReader(new StreamReader(@"../../csv/data.csv"), true))
using (var csv = new CsvReader(new StreamReader(@"DataDriveFromCSV/csv/data.csv"), true))
{
while (csv.ReadNextRecord())
{
string TestName = csv[0];
string json = csv[1];
string ExpectedResult = csv[2];
string Environment = csv[3];
string ChannelMessage = csv[4];
string ChannelSubject = csv[5];
string MessageCenterMessage = csv[6];
string MessageCenterSubject = csv[7];
yield return new[] { TestName, json, ExpectedResult, Environment, ChannelMessage, ChannelSubject, MessageCenterMessage, MessageCenterSubject };
}
}
}