[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 {
// ...
}
}
```