在范围报告中编译所有测试套件的结果
Compile results from all test suites in extent report
范围报告仅报告已 运行 的最后一个测试套件。
我已经用 10 种不同的套装设置了 selenium 测试,这些套装是 运行 的顺序。问题是 Extent Report 只记录最后一个套件的结果。我尝试了不同的方式来实现报告以编译所有结果。
代码结构:
BaseSetUp Class - 初始化驱动程序(OneTimeSetUp、SetUp、TearDown、OnetimeTearDown)
通用方法调用 - 继承自 BaseSetUp
PageObject 页面 - 获取所有页面对象
TestSuits - 继承自通用方法。
我在 BaseSetUp class 中有这样的报告:
[OneTimeSetUp]
public void Setup()
{
try
{
extent = new ExtentReports();
var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\bin\Debug", "");
var htmlReporter = new ExtentHtmlReporter(dir + "\Test_Execution_Reports" + "\Automation_Report" + ".html");
extent.AddSystemInfo("Environment", "Xylect AT");
extent.AddSystemInfo("User Name", "Lucas");
extent = new ExtentReports();
extent.AttachReporter(htmlReporter);
}
catch (Exception e)
{
throw (e);
}}
[SetUp]
public void BeforeTest()
{
try
{
_test = extent.CreateTest(TestContext.CurrentContext.Test.Name);
}
catch (Exception e)
{
throw (e);
}
}
[TearDown]
public void AfterTest()
{
try
{
var status = TestContext.CurrentContext.Result.Outcome.Status;
var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
var errorMessage = TestContext.CurrentContext.Result.Message;
Status logstatus;
switch (status)
{
case TestStatus.Failed:
logstatus = Status.Fail;
string screenShotPath = Capture(driver, TestContext.CurrentContext.Test.Name);
_test.Log(logstatus, "Test ended with " + logstatus + " – " + errorMessage);
_test.Log(logstatus, "Snapshot below: " + _test.AddScreenCaptureFromPath(screenShotPath));
break;
case TestStatus.Skipped:
logstatus = Status.Skip;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
default:
logstatus = Status.Pass;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
}
}
catch (Exception e)
{
throw (e);
}
}
[OneTimeTearDown]
public void TearDown()
{
try
{
//zip();
//Email();
extent.Flush();
driver.Close();
driver.Quit();
}
catch (Exception e)
{
throw (e);
}
}
我见过几种方法,可以将先前的报告添加到 "new" 创建的报告中,但我没有使它起作用。
其中一个测试套件中的测试用例示例
[TestCase(TestName = "01_LogIn"), Order(1)]
public void LogIn()
{
LogIn();
string loginAssert = HomePage.expLoginName.Text;
Assert.IsTrue(loginAssert.Contains("Hi, " + username + ""), "Login falied");
}
关于我应该如何前进有什么想法吗?
运行 范围报告 V4
你只要关注这个link。我希望它能解决你的问题。
您必须创建 3 个 classes。
BaseFixture.cs
ExtentManager.cs
ExtentTestManager.cs
之后,您可以在每个测试中初始化BaseFixture class。
[TestFixture, Parallelizable(ParallelScope.Fixtures)]
public class MemberLogInOut : BaseFixture
范围报告仅报告已 运行 的最后一个测试套件。
我已经用 10 种不同的套装设置了 selenium 测试,这些套装是 运行 的顺序。问题是 Extent Report 只记录最后一个套件的结果。我尝试了不同的方式来实现报告以编译所有结果。
代码结构: BaseSetUp Class - 初始化驱动程序(OneTimeSetUp、SetUp、TearDown、OnetimeTearDown)
通用方法调用 - 继承自 BaseSetUp
PageObject 页面 - 获取所有页面对象
TestSuits - 继承自通用方法。
我在 BaseSetUp class 中有这样的报告:
[OneTimeSetUp]
public void Setup()
{
try
{
extent = new ExtentReports();
var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\bin\Debug", "");
var htmlReporter = new ExtentHtmlReporter(dir + "\Test_Execution_Reports" + "\Automation_Report" + ".html");
extent.AddSystemInfo("Environment", "Xylect AT");
extent.AddSystemInfo("User Name", "Lucas");
extent = new ExtentReports();
extent.AttachReporter(htmlReporter);
}
catch (Exception e)
{
throw (e);
}}
[SetUp]
public void BeforeTest()
{
try
{
_test = extent.CreateTest(TestContext.CurrentContext.Test.Name);
}
catch (Exception e)
{
throw (e);
}
}
[TearDown]
public void AfterTest()
{
try
{
var status = TestContext.CurrentContext.Result.Outcome.Status;
var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
var errorMessage = TestContext.CurrentContext.Result.Message;
Status logstatus;
switch (status)
{
case TestStatus.Failed:
logstatus = Status.Fail;
string screenShotPath = Capture(driver, TestContext.CurrentContext.Test.Name);
_test.Log(logstatus, "Test ended with " + logstatus + " – " + errorMessage);
_test.Log(logstatus, "Snapshot below: " + _test.AddScreenCaptureFromPath(screenShotPath));
break;
case TestStatus.Skipped:
logstatus = Status.Skip;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
default:
logstatus = Status.Pass;
_test.Log(logstatus, "Test ended with " + logstatus);
break;
}
}
catch (Exception e)
{
throw (e);
}
}
[OneTimeTearDown]
public void TearDown()
{
try
{
//zip();
//Email();
extent.Flush();
driver.Close();
driver.Quit();
}
catch (Exception e)
{
throw (e);
}
}
我见过几种方法,可以将先前的报告添加到 "new" 创建的报告中,但我没有使它起作用。
其中一个测试套件中的测试用例示例
[TestCase(TestName = "01_LogIn"), Order(1)]
public void LogIn()
{
LogIn();
string loginAssert = HomePage.expLoginName.Text;
Assert.IsTrue(loginAssert.Contains("Hi, " + username + ""), "Login falied");
}
关于我应该如何前进有什么想法吗?
运行 范围报告 V4
你只要关注这个link。我希望它能解决你的问题。
您必须创建 3 个 classes。
BaseFixture.cs
ExtentManager.cs
ExtentTestManager.cs
之后,您可以在每个测试中初始化BaseFixture class。
[TestFixture, Parallelizable(ParallelScope.Fixtures)]
public class MemberLogInOut : BaseFixture