zoukankan      html  css  js  c++  java
  • 章节十七、1-高级报告介绍

    一、Extent Report 的功能

    1、使用写好的API,非常简单。

    2、美观的界面。

    3、为测试运行结果提供指示板。

    4、创建一个单独的报告文件,从而减少对项目文件的管理。

    5、分类成单独的部分,按类别提供测试分析。

    6、根据测试用例的状态生成饼图。

    7、我们可以根据状态筛选报告。

    8、它可以获取系统细节,如操作系统、java版本和内存等。

    9、可以在报告中附加截图,这是最重要的功能。

    10、轻松集成测试--跑日志。

    11、可以使用外部配置文件进行大量定制。

    二、使用Extent Report首先我们需要下载4下jar文件,然后导入的项目文件中(具体的导入操作我以前的章节中有介绍过):

    1、Extent Reports Version:

    https://search.maven.org/search?q=a:extentreports

    2、Freemarker Version:

    http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.freemarker%22%20AND%2 0a%3A%22freemarker%22

    3、Jsoup Version:

    http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.jsoup%22%20AND%20a%3 A%22jsoup%22

    4、Sqlite-jdbc Version:

    http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.xerial%22%20AND%20a%3 A%22sqlite-jdbc%22

    三、实例演示

    1、网络没有翻墙的话,extent report的CSS加载是有问题的,能生成报告,但报告显示有问题,解决这个问题的办法是:重写ExtentReport这个类。

     1 package extenreports;
     2 
     3 import java.io.File;
     4 import java.util.Date;
     5 
     6 import com.aventstack.extentreports.ExtentReports;
     7 import com.aventstack.extentreports.ResourceCDN;
     8 import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
     9 import com.aventstack.extentreports.reporter.configuration.ChartLocation;
    10 import com.aventstack.extentreports.reporter.configuration.Theme;
    11 
    12 public class ExtentFactory {
    13     public static ExtentReports getInstance() {
    14 
    15         Date date = new Date();
    16         String form = String.format("%tF", date);
    17         String hour = String.format("%tH", date);
    18         String minute = String.format("%tM", date);
    19         String second = String.format("%tS", date);
    20         // 生成的路径以及文件名
    21         final String OUTPUT_FOLDER = "C:\Users\acer\Desktop\其它\ExtentReports";
    22         final String FILE_NAME = "index" + form + hour + minute + second + ".html";
    23 
    24         // 文件夹不存在的话进行创建
    25         File reportDir = new File(OUTPUT_FOLDER);
    26         if (!reportDir.exists() && !reportDir.isDirectory()) {
    27             reportDir.mkdir();
    28         }
    29 
    30         ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(OUTPUT_FOLDER + FILE_NAME);
    31         // 设置静态文件的DNS
    32         htmlReporter.config().setResourceCDN(ResourceCDN.EXTENTREPORTS);
    33         // 怎么样解决cdn.rawgit.com访问不了的情况
    34         htmlReporter.config().setResourceCDN(ResourceCDN.EXTENTREPORTS);
    35         htmlReporter.config().setDocumentTitle("标品页面功能自动化测试报告");
    36         htmlReporter.config().setReportName("标品冒烟测试--页面功能自动化测试报告");
    37         htmlReporter.config().setChartVisibilityOnOpen(true);
    38         htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP);
    39         htmlReporter.config().setTheme(Theme.STANDARD);
    40         htmlReporter.config().setCSS(".node.level-1  ul{ display:none;} .node.level-1.active ul{display:block;}");
    41         htmlReporter.config().setEncoding("gbk");
    42         ExtentReports extent = new ExtentReports();
    43         extent.attachReporter(htmlReporter);
    44         extent.setReportUsesManualConfiguration(true);
    45         extent.setSystemInfo("Selenium Version", "3.11.0");
    46         extent.setSystemInfo("Platform", "Windows");
    47 
    48         return extent;
    49     }
    50 }

    注意:

    重写ExtentReport遇到包无法导入的问题, com.aventstack.extentreports.ResourceCDN和 com.aventstack.extentreports.reporter.configuration.ChartLocation 我用的是最新的依赖,无法导入这两个包,最后按照网上的方法,改版本号为3.0.6之后就解决 了。

     2、测试案例

     1 package extenreports;
     2 
     3 import java.util.concurrent.TimeUnit;
     4 import org.openqa.selenium.By;
     5 import org.openqa.selenium.NoSuchElementException;
     6 import org.openqa.selenium.WebDriver;
     7 import org.openqa.selenium.WebElement;
     8 import org.openqa.selenium.chrome.ChromeDriver;
     9 import org.testng.Assert;
    10 import org.testng.annotations.AfterClass;
    11 import org.testng.annotations.BeforeClass;
    12 import org.testng.annotations.Test;
    13 
    14 import com.aventstack.extentreports.ExtentReports;
    15 import com.aventstack.extentreports.ExtentTest;
    16 import com.aventstack.extentreports.Status;
    17 
    18 
    19 public class SeleniumLoginTest {
    20     
    21     private WebDriver driver;
    22     private String baseUrl;
    23 //    使用ExtentReports高级报告,我们需要先声明以下两个变量(需要导入相对应的包,否则会报错)
    24     ExtentReports reports;
    25     ExtentTest test;
    26 
    27     @BeforeClass
    28     public void beforeClass() {
    29         baseUrl = "https://mail.qq.com";
    30         //初始化变量
    31         reports = ExtentFactory.getInstance();
    32 //        括号中填写的是测试的名字
    33         test = reports.createTest("Verify if login success");
    34         driver = new ChromeDriver();
    35 //        记录登录的日志信息
    36         test.log(Status.INFO,"Browser Maxanized ............");
    37         driver.manage().window().maximize();
    38         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    39         test.log(Status.INFO,"Browser started ............");
    40         driver.get(baseUrl);
    41         test.log(Status.INFO,"Web  Application Open ............");
    42 
    43     }
    44     
    45     @Test
    46     public void test1_validLoginTest() throws Exception {
    47         driver.switchTo().frame("login_frame");
    48         
    49         WebElement dl = driver.findElement(By.className("switch_btn"));
    50         dl.click();
    51         
    52         WebElement emailField = driver.findElement(By.id("u"));
    53         emailField.sendKeys("1234567890");
    54         test.log(Status.INFO,"Enter User Name ............");
    55         
    56         WebElement passwordField = driver.findElement(By.id("p"));
    57         passwordField.sendKeys("******");
    58         test.log(Status.INFO,"Enter Password ............");
    59 
    60         
    61         WebElement goButton = driver.findElement(By.id("login_button"));
    62         goButton.click();
    63         test.log(Status.INFO,"Clicked on login button ............");
    64 
    65         WebElement welcomeText = null;
    66         
    67         try {
    68             welcomeText = driver.findElement(By.xpath("//b[text()='****']"));
    69         }
    70         catch (NoSuchElementException e) {
    71             System.out.println(e.getMessage());
    72         }
    73         Assert.assertTrue(welcomeText != null);
    74         test.log(Status.PASS,"Verified Login Success............");
    75 
    76     }
    77     
    78     @AfterClass
    79     public void afterClass() throws InterruptedException {
    80         driver.quit();
    81 //        刷新
    82         reports.flush();
    83     }
    84 }

    运行结果:在我指定的目录下生成了一个测试报告文件。

    测试报告文件内容:

     错误总结:

    我的ExtentReport  jar包最先是直接从网站下载然后build到我的java项目中,这就导致了我的testcase类中如果不调用该jar包中的remove方法运行时就会报错且无法成功生成测试报告文件,于是我更换了最新的ExtentReport  jar版本4.0.9,仍然无法解决。查阅了一大堆资料后仍为解决,忍无可忍只能通过maven直接在线加载ExtentReport   jar包并删除了testcase中的remove方法,最终运行成功,文件也成功生成到指定目录。(先把原先导入的包删除掉在maven新的jar包)

    maven下载地址:

    <dependency>

    <groupId>com.aventstack</groupId>

    <artifactId>extentreports</artifactId>

    <version>3.0.6</version>

    </dependency>

    3、如何把普通项目转换为maven项目

    在eclipse中找到需要转换的项目然后右击,按下图标识选择。

     然后点击下图的finish。

     成功后就可以看到项目中出现了一个pom.xml文件。

     打开这个文件,把上面下载的extentreports代码标签复制到xml文件中的如图所示位置,点击保存,jar包就自动下载到了项目中。

    如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

    内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

    欢迎关注,转载请注明来源。

  • 相关阅读:
    [bzoj2259][Oibh]新型计算机_Dijkstra
    [bzoj1660][Usaco2006 Nov]Bad Hair Day_单调栈
    [bzoj3943][Usaco2015 Feb]SuperBull_Kruskal
    [bzoj2131]免费的馅饼_树状数组
    [bzoj3932][CQOI2015]任务查询系统_主席树
    软件图标大全网站
    提示用户一直输入数字(默认为正整数),当用户输入end的时候显示当前输入数字中的最大值。
    打印多边形的菱形(for的嵌套)
    while循环问题(老师询问问题,学生回答。学生会了可以放学,或者老师讲了10遍,还是没有会的,被迫无奈也要放学。)
    while练习:输入一个班级的人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩。
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/11649567.html
Copyright © 2011-2022 走看看