如何将值从测试方法传递到TestNG报告

时间:2016-10-21 11:19:29

标签: java testng

作为Selenium Automation Framework的一部分,我需要编写一个方法来生成自定义的TestNG报告。我知道这可以通过覆盖来实现

public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) 
IReporter界面中的

方法。但问题是我的测试方法计算了一些值,我必须将这些值传递给testNG报告。如何在testNG报告中打印测试方法的值?

2 个答案:

答案 0 :(得分:2)

ITestResult对象(可以通过调用@TestReporter.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()) {
            ...
        }
    }
}