Я интегрировал протокол 4net и отчеты по экстентам вместе для регистрации. Я хотел передать имя метода тестирования в качестве имени файла журнала, поэтому для того, чтобы сделать это, я передавал контекст теста в методе Class Initialize перед каждым запуском теста.
скрипт выглядит так:
[TestClass]
public class ToverifySequenceProperty : BaseSetup
{
BaseSetup baseobj = new BaseSetup();
BaseDeveloper_CF devobj = new BaseDeveloper_CF();
// public TestContext TestContext { get; set; }
// public static string logfilename;
[TestMethod]
public void VerifySequenceProperty()
{
try
{
baseobj.LocateParentWindowbyName("SystemModeler17 - Microsoft Visual Studio (Administrator)");
htmlLogging.HTMLReportLogging("Info", "Prent Window Located Successfully");
var projectnode = "SystemModeler17 [(OS 2200) Standard mode] on SystemModeler17";
devobj.AddElement(projectnode, "Folder", "fol1");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.AddElement("fol1", "Segment", "seg1");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.AddElement("seg1", "Ispec", "ispec1");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.AddElement("ispec1", "Attribute", "Attribute1");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.AddElement("ispec1", "Attribute", "Attribute2");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.AddElement("ispec1", "Attribute", "Attribute3");
htmlLogging.HTMLReportLogging("Info", "Element Added Successfully");
devobj.DeleteElement("Attribute1");
htmlLogging.HTMLReportLogging("Info", "Element Deleted Successfully");
devobj.CheckSequenceError();
htmlLogging.HTMLReportLogging("Info", "Sequence error checked Successfully");
devobj.ResolveSequenceError("ispec1");
htmlLogging.HTMLReportLogging("Info", "Sequence Error Resolved Successfully");
}
catch (Exception ex)
{
htmlLogging.HTMLReportLogging("Error", ex.ToString());
}
}
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
test = extent.CreateTest($"{context.TestName}");
logfilename = $"{context.TestName}";
Setup();
}
[ClassCleanup]
public static void ClassCleanup()
{
TearDown();
Directory.CreateDirectory(@"C:\LogFiles");
File.Move(@"C:\temp\default.log", @"C:\LogFiles\" + logfilename + ".log");
}
}
Теперь я добавляю этот метод инициализации класса и очистки класса во все файлы тестовых классов. Есть ли способ, которым я могу использовать это только один раз, и он автоматически запускается для каждого тестового класса. Я попытался сделать конструктор в классе BaseSetup, но тогда контекст там нулевой. Как пройти тестовый контекст тестовых классов, я не получаю эту часть.