🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] 使用一组java注解来展示allure的功能 ### 展示名字 description属性 为了在allure报告中可以看到更直观的名字,可以使用testng自己注解里面的description属性来进行标识。 ``` package my.company.tests; import org.testng.annotations.Test; public class MyTests { @BeforeMethod(description = "Configure something before test") public void setUp() { //... } @Test(description = "Human-readable test name") //这里测试方法名字就会展示 "Human-readable test name",而不是testSomething public void testSomething() throws Exception { //... } } ``` ### 描述 @Description 可以为每一个方法,添加更详细的描述 ``` package my.company.tests; import org.junit.Test; import io.qameta.allure.Description; @Testpublic class MyTests { @Test @Description("Some detailed test description") //testSomething 方法名下的详细描述是"Some detailed test description" public void testSomething() throws Exception { ... } } ``` ### 步骤@Step 步骤是构成测试场景的操作。步骤可以是:参数化、检查、嵌套步骤和创建附件。每个步骤都有一个名称。 为了在Java代码中定义步骤,需要用@Step注释各自的方法。未指定时,步骤名等于带注释的方法名。 注意,steps的机制经过了修改,现在它支持字段分析。在Allure 1中,用户不得不指定索引位置来注入args值 到 Step的描述内。Allure 2采用了基于字段反射的方法,可以通过名称提取参数字段的值 假设您有以下实体: ``` public class User { private String name; private String password; } ``` 你可以获取字段的值,直接通过字段名字来指定 ``` import io.qameta.allure.Step; //{ }内的参数值,必须和{}没有任何空格,否则读取不到 @Step("Type {user.name} / {user.password}.") public void loginWith(User user) { ... } ``` 同样也支持数组和集合。因此,不需要针对对象重写toString()方法。 ### 附件@Attachment @Attachment附件的标签会返回需要增加的文件的String 或者Byte[] ``` import io.qameta.allure.Attachment; ... @Attachment public String performedActions(ActionSequence actionSequence) { return actionSequence.toString(); } @Attachment(value = "Page screenshot", type = "image/png") public byte[] saveScreenshot(byte[] screenShot) { return screenShot; } ``` 或者可以使用Allure的帮助类 ``` import io.qameta.allure.Allure; ... Allure.addAttachment("My attachment", "My attachment content"); Path content = Paths.get("path-to-my-attachment-contnet"); try (InputStream is = Files.newInputStream(content)) { Allure.addAttachemnt("My attachment", is); } ``` **注意:** 如果被标注了@Attachment的方法,返回的数据有String和Byte[]的类型区别,所以,我们使用toString()方法去获取附件内容 ***** ***** 可以使用@Attachment注释的类型参数为每个附加文件指定精确的MIME类型,如上所示。但是,不需要为所有附加文件显式地指定附件类型,因为默认情况下会分析附件内容并自动确定附件类型。在处理纯文本文件时,通常需要指定附件类型。 ### 链接@Link 可以添加链接到测试管理平台,bug跟踪平台 ``` import io.qameta.allure.Link; import io.qameta.allure.Issue; import io.qameta.allure.TmsLink; @Link("https://example.org") @Link(name = "allure", type = "mylink") public void testSomething() { ... } @Issue("123") @Issue("432") public void testSomething() { ... } @TmsLink("test-1") @TmsLink("test-2") public void testSomething() { ... } ``` 为了指定链接模式,可以使用以下格式的系统属性:allure.link.my-link-type.pattern=https://example.org/custom/{}/path。Allure将用注释中指定的值替换{}占位符。例如: ``` allure.link.mylink.pattern=https://example.org/mylink/{} allure.link.issue.pattern=https://example.org/issue/{} allure.link.tms.pattern=https://example.org/tms/{} ``` ### 严重程度@Severity @Severity定义测试方法优先级 ``` package org.example.tests; import org.junit.Test; import io.qameta.allure.Severity; import io.qameta.allure.SeverityLevel; public class MyTest { @Test @Severity(SeverityLevel.CRITICAL) public void testSomething() throws Exception { // ... } } ``` 其中严重等级共有 ``` BLOCKER("blocker"), //阻塞 CRITICAL("critical"), //严重 NORMAL("normal"), //普通 MINOR("minor"), // 较小的 TRIVIAL("trivial"); //不严重的 ``` ### 行为映射@Epic @Feature @Story 某些测试方法被Features 和Stories 分类执行,为了增加这类映射,可以使用@Epic标签 以及@Feature和 @Story 主要是使用这3个标签对测试套件,用例,步骤之类的进行分组,可以在报告的行为栏看到分组内容,方便追踪分组内容 ``` package org.example.tests; import org.junit.Test; import io.qameta.allure.Epic; import io.qameta.allure.Feature; import io.qameta.allure.Story; @Epic("Allure examples") @Feature("Junit 4 support") public class MyTest { @Test @Story("Base support for bdd annotations") @Story("Advanced support for bdd annotations") public void testSomething() throws Exception { // ... } } ```