2016-10-21 2 views
2

Как часть Selenium Automation Framework, мне нужно написать метод для генерации собственного отчета TestNG. Я знаю, что это может быть достигнуто путем переопределенияКак передать значения из метода тестирования в отчет TestNG

public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) 

метод в IReporter интерфейсе. Но проблема в том, что мои методы тестирования вычисляют некоторые значения, и я должен передать эти значения в отчет testNG. Как распечатать значения из метода test в отчете testNG?

ответ

0

Все тестовые данные хранятся в ITestResult:

for (ISuite suite : suites) { 
    ... 
    for (ISuiteResult result : suite.getResults().values()) 
     ... 
     IResultMap iFailed = result.getTestContext().getFailedTests(); 
     for(ITestResult itr: iFailed.getAllResults()) { 
      ... 
     } 
    } 
} 
2

ITestResult объекта (этот объект может быть доступен из внутри метода @Test путем вызова Reporter.getCurrentTestResult()) в основном имеет setAttribute метод, который принимает в ключевой строке и чья Значение - объект Object.

Таким образом, вы можете просто использовать что-то вроде ниже в вашем методе @Test, чтобы сохранить значения, вычисленные вашим тестом, в соответствующий объект ITestResult, а затем извлечь его из вашей реализации IReporter.

@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); 
} 
Смежные вопросы