testNG:在@AfterSuite部分内通过邮件发送报告

时间:2013-09-03 12:19:54

标签: email selenium report testng

我想在@AfterSuite部分中发送testNG(java + eclipse + testNG)生成的报告。 发送它不是问题,但关键是报告是在@AfterSuite部分之后生成的,所以,基本上,我发送前一个而不是最后一个! 关于如何解决它的任何想法?

2 个答案:

答案 0 :(得分:2)

如您所见,@ AfterSuite在生成报告之前运行。

您是否考虑过实施TestNG IReporter listener

public class MyReporter implements IReporter {


        @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> iSuites, String s) {

            //Create your bespoke results

            //Email results
        }
    }

显然,你可以看到一个缺陷,你必须从原始结果数据中生成自己的结果(如果你只想通过电子邮件发送数据子集,这可能是有利的。)

理想的解决方案是能够扩展默认报告生成器,但我不确定是否可以这样做。但是http://reportng.uncommons.org/提供了一个现有的监听器,它实际上提供了更好的报告输出。

如果你扩展这个类,并调用他们的代码,然后添加电子邮件生成器代码,它可能会工作

public class MyReporter extends HTMLReporter {


        @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> iSuites, String s) {
            super.generateReport(xmlSuites, iSuites, s);

            //Email results
        }
    }

您可以通过多种方式将监听器附加到测试套件,如TEstNG网站(http://testng.org/doc/documentation-main.html#listeners-testng-xml)所述

所有这些的替代方法是使用像Maven这样的构建工具来运行测试,然后有一个测试后事件来通过电子邮件发送结果。

答案 1 :(得分:0)

我从Krishnan复制了答案 它对我有用。
顺便说一下,在我的测试环境中,我需要扩展org.testng.reporters.EmailableReporter2而不是EmailableReporter以确保正确的计数。
请参阅以下内容供您参考:

  
    

Krishnan Mahadevan Krishnan Mahadevan于2012年7月31日上午8:58我猜您是指生成的TestNG     &#34;可通过电子邮件发送-report.html&#34;你想要邮寄的。

  
     

根据这个假设,您应该如何做到这一点。

     
      
  1. 扩展org.testng.reporters.EmailableReporter
  2.   
  3. 覆盖org.testng.reporters.EmailableReporter.generateReport(List,   List,String)并让它做如下的事情:

         

    @覆盖   public void generateReport(List xml,List suites,String   outdir){        super.generateReport(xml,suites,outdir);        SendFileEmail e = new SendFileEmail();        e.sendEmail();   }

  4.         

    现在将您的这个监听器添加到您的套件文件中     标签