1

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

4

2 回答 2

2

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

您是否考虑过实现TestNG IReporter 侦听器

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 这样的构建工具来运行你的测试,然后有一个测试后事件来通过电子邮件发送结果。

于 2013-09-03T13:07:35.083 回答
0

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


Krishnan Mahadevan Krishnan Mahadevan 于 2012 年 7 月 31 日上午 8 点 58 分我猜您指的是 TestNG 生成的“emailable-report.html”,您希望将其邮寄。

有了这个假设,这就是你应该如何做到的。

  1. 扩展 org.testng.reporters.EmailableReporter
  2. 覆盖 org.testng.reporters.EmailableReporter.generateReport(List, List, String) 并让它执行如下操作:

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

现在使用标签将你的这个监听器添加到你的套件文件中。

于 2016-03-01T06:53:48.450 回答