2016-10-21 12 views
2

Selenium Automation Frameworkの一部として、カスタムTestNGレポートを生成するメソッドを記述する必要があります。私は、これはIReporterインタフェースでTestメソッドからTestNGレポートに値を渡す方法

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

メソッドをオーバーライドすることによって達成することができます知っています。しかし問題は、私のテストメソッドがいくつかの値を計算し、これらの値をtestNGレポートに渡す必要があることです。 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オブジェクト(このオブジェクトがReporter.getCurrentTestResult()を呼び出すことによって@Testメソッド内からアクセスすることができる)は、基本的に文字列キーを取り込む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); 
} 
関連する問題