我正在使用带有testng的appium中的扩展报告,它对我来说很好。每当我完成测试运行后,扩展报告就会在我的项目文件夹中生成html文件,这就是预期的结果。
问题是,当我再次运行测试时,扩展报告将覆盖先前创建的html文件的名称,从而生成新的html报告文件。
每次运行测试时,我都希望范围报告生成具有唯一名称或以in为日期的名称的html文件
答案 0 :(得分:0)
您可以将文件名创建为当前时间戳。这样,为您的报告文件取一个唯一的名称很容易-
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
extent = new ExtentReports (userDir +"\\test-output\\" + timeStamp + ".html", true);
答案 1 :(得分:0)
您可以通过设置唯一名称来实现:
String reportFile = resultDirectory + fileName + ".html";
比将报告保存到特定文件夹的方法:
public void saveReportFolder() throws IOException {
File srcDir = new
File(System.getProperty("user.home")+"/Automation/target");
File destDir = new File(System.getProperty("user.home") + "/reports/"+ System.getProperty("user.name")+"/"+dateTimeGenerator());
FileUtils.copyDirectory(srcDir, destDir);
}
...以及用于设置dateTime的实用程序:
public static String dateTimeGenerate(){
Format formatter = new SimpleDateFormat("YYYYMMdd_HHmmssSSS");
Date date = new Date(System.currentTimeMillis());
return formatter.format(date);
}
或者只是使用klov reports启动服务器并将所有内容都存储在数据库(MongoDb)中,这是一种更为优雅的方法。
希望这会有所帮助,
答案 2 :(得分:0)
我使用:
private static String timestamp = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()).replaceAll(":", "-");
public static String reportFullPath = getReportsPath() + "\\AutomationReport_" + timestamp + ".html";
答案 3 :(得分:0)
我做到了这一点,简洁明了。
String Outputfilename= ExecutionConfig.FileOutname;
System.err.close(); // written to remove JAVA 9 incompatibility.. continued below
System.setErr(System.out); // continue.. and remove the warnings
extent = new ExtentReports(System.getProperty("user.dir") + "/test-output/"+Outputfilename+".html", true);
因此,这里从类ExecutionConfig中调用ExecutionConfig.FileOutname,其中我正在从config.properties文件中读取值。然后将其分配给输出文件。
它也对我有用。
答案 4 :(得分:0)
我也遇到过类似的问题。在现实世界中,我们也需要旧报告。以下是针对 Extent PDF 报告的 Java 解决方案
我添加了一个事件监听器方法。使用的事件 - TestRunStarted。我们还需要注册此活动。 HTML报表也可以解决。
public void setCustomReportName(TestRunStarted event)
{
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
String currenttimestamp =sdf.format(timestamp);
Properties prop=new Properties();
//extent.reporter.pdf.out is the name of property which tell the report path
prop.setProperty("extent.reporter.pdf.out", "test output/PdfReport/ExtentPdf_"+currenttimestamp+".pdf");
ExtentService e1 =new ExtentService();
//ExtentReportsLoader is the inner class of ExtentService and initPdf is its private method which takes the path for report
Class<?>[] a=e1.getClass().getDeclaredClasses();
Method met;
//Even there is exception test run wont fail and report will also be generated (ExtentPdf.pdf)
try {
met = a[0].getDeclaredMethod("initPdf", Properties.class);
met.setAccessible(true);
met.invoke(a[0], prop);
} catch (NoSuchMethodException e) {
System.out.println("There is no method with name initPdf");
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
System.out.println("Argument passed to method initPdf are not correct");
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}