testNG集成Allure报告--注释使用说明

前置条件
  • 首先需要下载allure的zip包解压,然后配置环境变量即可(win)。allure的GitHub下载地址:
  • 然后执行testn.xml或者是单元测试下的runCase方法,两者任选其一。测试用例执行完成后会在项目目录下生成:allure-results文件夹
  • 最后通过cmd或者IDEA 的Terminal功能,在当前项目下执行如下命令
  1. allure serve allure-results

即可自动打开web页面测报告

下面详解下java版allure的注解使用

本次demo使用技术如下

  • 使用springboot框架+testNG框架+Allure报告框架+管理Selenium WebDriver所需的驱动程序webdrivermanager库+log4j2日志

  • 引入上面的依赖,具体allure-javaAnnotations项目pom文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>allure2test</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <parent>
  10. <groupId>org.springframework.boot</groupId>
  11. <artifactId>spring-boot-starter-parent</artifactId>
  12. <version>2.2.6.RELEASE</version>
  13. </parent>
  14. <!--引入spingboot框架-->
  15. <dependencies>
  16. <!-- springboot starter依赖 -->
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter</artifactId>
  20. <exclusions>
  21. <!-- 移除自带的log -->
  22. <exclusion>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-logging</artifactId>
  25. </exclusion>
  26. </exclusions>
  27. </dependency>
  28. <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-log4j -->
  29. <!--引入支持的log4j2日志依赖-->
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-log4j2</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-web</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-starter-test</artifactId>
  41. <scope>test</scope>
  42. </dependency>
  43. <!--引入allure2的依赖-->
  44. <dependency>
  45. <groupId>io.qameta.allure</groupId>
  46. <artifactId>allure-testng</artifactId>
  47. <version>2.10.0</version>
  48. </dependency>
  49. <!-- testng -->
  50. <dependency>
  51. <groupId>org.testng</groupId>
  52. <artifactId>testng</artifactId>
  53. <version>6.14.3</version>
  54. </dependency>
  55. <!--WebDriverManager是一个库,它可以自动管理Selenium WebDriver所需的驱动程序(例如chromedriver,geckodriver等)-->
  56. <dependency>
  57. <groupId>io.github.bonigarcia</groupId>
  58. <artifactId>webdrivermanager</artifactId>
  59. <version>3.0.0</version>
  60. </dependency>
  61. </dependencies>
  62. <build>
  63. <plugins>
  64. <plugin>
  65. <groupId>org.springframework.boot</groupId>
  66. <artifactId>spring-boot-maven-plugin</artifactId>
  67. </plugin>
  68. </plugins>
  69. </build>
  70. </project>
  • Allure注释大致可分类如下:
  1. /**@Epic -Epics可用作您的产品或项目的大量需求的占位符。Epic将在适当的时候分为较小的用户故事。
  2. *用户故事可以拆分为较小的任务,并且可以是较大的Feature和Epic的一部分。
  3. */
  4. @Epic
  5. @Features
  6. //是一个标注信息注解,但是改标注可以把相同的标注统一到相同模块下用于筛选
  7. @Stories/@Story
  8. //使用@Severity批注测试缺陷等级,例如BLOCKER,CRITICAL,NORMAL,MINOR,TRIVIAL
  9. @Severity(SeverityLevel.BLOCKER)
  10. //测试方法描述
  11. @Description("测试流程描述")
  12. //@Step注释是对任何(公共,私有,受保护)对任何方法进行注释。例如- @Step(“输入{0}和{1}”)
  13. @Step
  14. //@Attachment-附件只是带有注释的方法,@Attachment该方法返回String或byte [],应将其添加到报表中。我们可以将故障屏幕截图作为附件
  15. @Attachment
  16. //@Links-我们可以将测试链接到某些资源,例如TMS(测试管理系统)或错误跟踪器。将测试用例链接到测试方法总是有帮助的。
  17. @Link

下面介绍每种注解的示例及报告展示
  • @Description注解:描述性注解

    • 示例--位置test包下的BasePageTest类中每个测试方法都加了@Description,如:
  1. @Description("Description注解:验证主页面 test 2")
  2. @Test
  3. public void baseTest2() throws InterruptedException {
  4. Assert.assertTrue(true, "测试示例 ");
  5. }

对应allure报告位置截图如下:

  • @Stories/@Story注解使用(该注解可以管理同一模块,及分组展示)

    • 示例--位置同上
  1. @Description("Description注解:验证主页测试1")
  2. @Story("基础测试")
  3. @Test
  4. public void baseTest1() {
  5. System.out.println("我在test1测试中");
  6. }
  7. @Description("Description注解:验证主页面 test 2")
  8. @Story("基础测试")
  9. @Test
  10. public void baseTest2() {
  11. Assert.assertTrue(true, "测试示例 ");
  12. }

对应allure报告展示如下:

  • @Severity注解(@Severity注解:测试的严重程度划分BLOCKER,CRITICAL,NORMAL,MINOR,TRIVIAL。通过查看此信息,我们可以了解测试失败的严重性。)
  • 示例
  1. @Severity(SeverityLevel.TRIVIAL)
  2. @Description("Description注解:验证主页测试1")
  3. @Story("基础测试")
  4. @Test
  5. public void baseTest1() {
  6. System.out.println("我在test1测试中");
  7. }
  8. @Severity(SeverityLevel.BLOCKER)
  9. @Description("Description注解:验证主页面 test 2")
  10. @Story("基础测试")
  11. @Test
  12. public void baseTest2() {
  13. Assert.assertTrue(true, "测试示例 ");
  14. }
  15. @Severity(SeverityLevel.CRITICAL)
  16. @Description("Description注解:验证主页面 test 3")
  17. @Story("基础测试")
  18. @Test
  19. public void baseTest3() {
  20. Assert.assertTrue(false, "这是预期的失败");
  21. }

对应allure报告展示如下:

  • @Step注解( @Step注解可以对参数化进行检查)

    • 示例
  1. @Step("验证参数 uname {0} and password {1}")
  2. public boolean verifySignIn(String uname, String pwd) {
  3. enterUserName(uname);
  4. enterPassword(pwd);
  5. clickOnSignIn();
  6. return getErrorMessage().contains("不正确的");
  7. }
  8. @Step("输入 username {0}")
  9. public void enterUserName(String userName) {
  10. WebElement emailTxtBox = driver.findElement(emailTextBox);
  11. if (emailTxtBox.isDisplayed())
  12. emailTxtBox.sendKeys(userName);
  13. }
  14. //SignInPageTest测试类
  15. @Severity(SeverityLevel.BLOCKER)
  16. @Description("验证登录功能")
  17. @Story("测试验证登录")
  18. @Test
  19. public void verifySignInFunction() {
  20. System.out.println("登录功能详细信息...");
  21. basePage = new BasePage(driver);
  22. signInPage = basePage.clickSignInBtn();
  23. Assert.assertTrue(signInPage.verifySignInPageTitle(), "登录页面标题不匹配");
  24. Assert.assertTrue(signInPage.verifySignInPageText(), "页面文本不匹配");
  25. Assert.assertTrue(signInPage.verifySignIn("usertest", "p123"), "登录失败");
  26. }

对应allure报告展示如下:

  • @Epic注解(在敏捷中,测试也可以按Epic,Theme和story进行分类,allure中也可以这样标注映射关系)

    • 示例
  1. @Epic("Epic示例")
  2. @Feature("testNG+allure集成")
  3. public class EpicTest {
  4. @Test
  5. @Story("对story注释的基本支持")
  6. @Story("对story注释的高级支持")
  7. public void testSomething() throws Exception {
  8. System.out.println("Epic注解使用");
  9. }
  10. }

对应allure报告展示如下:

  • @Links注解(@Links可以将测试链接到某些资源,例如TMS(测试管理系统)或错误跟踪器等

    • 示例
  1. @Link("www.baidu.com")
  2. @Severity(SeverityLevel.TRIVIAL)
  3. @Description("Description注解:验证主页测试1")
  4. @Story("基础测试")
  5. @Test
  6. public void baseTest1() {
  7. System.out.println("我在test1测试中");
  8. }

对应allure报告展示如下:

  • @Attachment注解(@Attachment该方法返回String或byte [],应将其添加到报表中。我们可以使用该注解将异常屏幕截图作为附件展示)

allure是一种灵活的轻量级多语言测试报告工具,它不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容,而且还允许参与开发过程的每个人从日常执行中提取最大的有用信息,详细的了解注解使用会使你的测试报告更加易读直观!

java版集成Allure报告--注释使用说明的更多相关文章

  1. Mac IntelliJ IDEA 2017(java开发集成环境)附注册码和破解教程 v2017.3.5破解版

    原文:http://www.orsoon.com/Mac/155938.html 原文中含有软件下载地址 软件介绍 IntelliJ IDEA 2017 Mac激活版是Mac平台上的一款java开发集 ...

  2. pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告

    pytest是什么 pytest是python的一款测试框架,拥有unittest的功能并比它更丰富. allure是什么 有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例 ...

  3. 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)

    硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...

  4. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  5. 20145221 《Java程序设计》实验报告二:Java面向对象程序设计

    20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  6. 20145221 《Java程序设计》实验报告三:敏捷开发与XP实践

    20145221 <Java程序设计>实验报告三:敏捷开发与XP实践 实验要求 以结对编程的方式编写一个软件,Blog中要给出结对同学的Blog网址 记录TDD和重构的过程,测试代码不要少 ...

  7. 20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145221 <Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调 ...

  8. 【Python】使用Pytest集成Allure生成漂亮的图形测试报告

    前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...

  9. 如何利用jenkins插件查看allure报告-----完整篇(解决404和无数据问题)

    背景: python3+appium+pytest+allure写了安卓的自动化脚本,在windows本机pycharm上跑通过后生成了allure报告.  公司jenkins搭建在linux服务器上 ...

随机推荐

  1. .NET Core3.1 Dotnetty实战第一章

    一.概要 本系列文章主要讲述由微软Azure团队研发的.net的版本的netty,Dotnetty.所有的开发都将基于.net core 3.1版本进行开发. Dotnetty是什么,原本Netty是 ...

  2. 阿里大牛教你基于Python的 Selenium自动化测试示例解析

    今天给大家讲解的是自动化测试示例的解析,如有不对的地方请多多指教. 自动化测试示例如下: from selenium import webdriver from selenium.webdriver. ...

  3. springboot AOP实战

    目录 AOP实战 maven依赖 定义切面 采用扫描类的方式 采用注解的方式 通知 前置通知 后置通知 返回通知 异常通知 环绕通知 JoinPoint 获取切点处的注解 git AOP实战 mave ...

  4. spring中bean初始化执行顺序

    常用的javabean的初始化方法为,构造方法,@PostConstruct,以及实现InitializingBean接口的afterPropertiesSet方法. note在构造方法执行时候,sp ...

  5. 在centos6.5下搭建lnmp

    1.查看环境: [root@localhost /]# cat /etc/redhat-release CentOS release 6.5 (Final)   2.关掉防火墙(需要到国外地址下载软件 ...

  6. File类与IO流

    一.File类与IO流 数组.集合等内容都是把数据放在内存里面,一旦关机或者断电,数据就会立刻从内存里面消失.而IO主要讲文件的传输(输入和输出),把内存里面的数据持久化到硬盘上,如.txt .avi ...

  7. 【Gin-API系列】守护进程和平滑重启(八)

    生产环境的API服务我们都会部署在Linux服务器上,为了不受终端状态的影响,启动服务的时候会让服务在后台运行.那么如何让服务在后台运行呢,目前有2种常见的方法. 1.nohub 运行 表示忽略SIG ...

  8. 用于测试SqlAnalyzer1.00的十七个测试用例

    SqlAnalyzer功能:解析SQL语句,具体到字段,表和条件,并将其整理后输出格式化文本. 1. 原文=select a from b 整理后文本= select a from b 2. 原文=s ...

  9. java中数据类型占多少字节

    基本类型(primitive type) 数值类型:byte占1个字节:short占2个字节:int占4个字节:long占8个字节:float占4个字节:double占8个字节.char占2个字节. ...

  10. Repeater每行绑定事件代码

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repea ...