我已创建了发送邮件的java方法以及附加TestNG emailable-report的邮件。邮件和报告正在发送到指定的电子邮件地址。
我的问题是,当所有其他测试完成时,我最后调用sendmail方法,但事情是我总是在邮件中获得上一次上一次报告。所有类执行后,它是否像TestNG更新报告?
我希望通过邮件获取最新的易邮件报告,而不是之前的最后一封可通过电子邮件报告。我该怎么做?
答案 0 :(得分:4)
我想通过邮件而不是之前的邮件获取最新的电子邮件报告 最后的emailable报告..我怎么能这样做?
我认为..您正在@aftersuite
发送邮件。您之前的测试可通过电子邮件报告,因为测试目前正在运行,并且只有在完成报告时才会生成。
我建议你使用像jenkins这样的持续集成服务器,因为它提供发送电子邮件作为后期构建选项或构建工具,如Maven或ant来运行测试,然后有一个测试后事件通过电子邮件发送结果.Maven也提供了许多插件,以便在测试执行后自动发送邮件,如Postman邮件插件
另一种解决方案:如果您不愿意使用持续集成服务器(jenkins)或maven或ant
TestNG IReporter听众
通过将类实现到IReporter
接口来创建自己的CustomReport。此接口只有一种方法可以实现generateReport。此方法具有List中完整测试执行的所有信息,我们可以使用它生成报告。
public class CustomReporter implements IReporter{
@Override
public void generateReport(List<XmlSuite> arg0, List<ISuite> arg1,
String outputDirectory) {
// Second parameter of this method ISuite will contain all the suite executed.
for (ISuite iSuite : arg1) {
//Get a map of result of a single suite at a time
Map<String,ISuiteResult> results = iSuite.getResults();
//Get the key of the result map
Set<String> keys = results.keySet();
//Go to each map value one by one
for (String key : keys) {
//The Context object of current result
ITestContext context = results.get(key).getTestContext();
//results of all the test case will be stored in the context object
//Ex: context.getFailedTests(); will give all failed tests and similarly you can get passed and skipped test results make your own html report using the above data
}
}
}
}
希望这可以帮助你...如果你需要任何进一步的帮助,请退回
答案 1 :(得分:0)
对于Windows操作系统,我在@AfterSuite中创建了(对于TestNG)最后一个方法,通过两个步骤发送带附件和批处理文件的邮件。首先启动 mvn clean test 以执行所有测试,而不使用以前的结果。第二步启动测试没有参数清理并在非现有组上运行:) 批处理包含在测试文件夹中。
start /wait cmd /k "mvn clean test && exit" /secondary /minimized
REM to send email with results in file, whitch was composed after test suite (mvn without: clean)
start /wait cmd /k "mvn test -Dgroups=PhantomGroupNonExist && exit" /secondary /minimized