Я пытаюсь использовать значение столбца в качестве имени тестов, чтобы все строки отображались на панели обозревателя тестов в 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 };
}
}
}