作为Selenium Automation Framework的一部分,我需要编写一个方法来生成自定义的TestNG报告。我知道这可以通过覆盖来实现
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory)
IReporter
界面中的方法。但问题是我的测试方法计算了一些值,我必须将这些值传递给testNG报告。如何在testNG报告中打印测试方法的值?
答案 0 :(得分:2)
ITestResult
对象(可以通过调用@Test
从Reporter.getCurrentTestResult()
方法中访问此对象)基本上有setAttribute
方法,该方法接收String键并且其value是一个Object
对象。
因此,您可以在@Test
方法中使用以下内容,将测试计算出的值保存到相应的ITestResult
对象中,然后从IReporter
实现中检索它。 / p>
@Test
public void myTestMethod() {
Map<String, Object> computedItems = new HashMap<>();
//Lets assume that the computedItems is what we need to save for retrieval from our reports.
ITestResult testResult = Reporter.getCurrentTestResult();
testResult.setAttribute("key", computedItems);
}
答案 1 :(得分:0)
所有测试数据都存储在ITestResult中:
for (ISuite suite : suites) {
...
for (ISuiteResult result : suite.getResults().values())
...
IResultMap iFailed = result.getTestContext().getFailedTests();
for(ITestResult itr: iFailed.getAllResults()) {
...
}
}
}