软件测试学习笔记丨 Allure2 报告中添加用例分类
作者:测试人
- 2024-07-09 北京
本文字数:3903 字
阅读完需:约 13 分钟
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/28354
Allure 分类简介
应用场景:可以为项目,以及项目下的不同模块对用例进行分类管理。也可以运行某个类别下的用例。
报告展示:类别会展示在测试报告的 Behaviors 栏目下。
Allure 提供了三个注解:
@Epic
:敏捷里面的概念,定义史诗,往下是 feature。@Feature
:功能点的描述,理解成模块往下是 story。@Story
:故事 story 是 feature 的子集。
Allure epic/feature/story 的关系
epic:敏捷里面的概念,用来定义史诗(需求,项目),相当于定义一个项目。
feature:相当于一个功能模块,相当于 testsuite,可以管理很多个子分支 story。
story:相当于对应这个功能或者模块下的不同场景,分支功能。
epic 与 feature、feature 与 story 类似于父子关系。
系统模块:@Epic/@Epics
应用场景:在测试报告中看到用例所在的项目,或者定义一个项目的需求。
解决方案:
@Epic
注解。
@Epic("需求1")
//@Epic("需求13")
@Epics({
@Epic("需求2"),
@Epic("需求3")
})
@DisplayName("步骤方法验证")
public class StepMethodTest {
int result;
@Test
@DisplayName("加法步骤验证")
void testSum() {
//测试逻辑代码
}
@Test
@DisplayName("一个测试方法中添加多个大步骤")
void testMultipleSteps() {
//测试逻辑代码
}
@Test
@DisplayName("多个步骤验证")
void testSum2() {
//测试逻辑代码
}
}
复制代码
功能模块:@Feature/@Features
应用场景:表示被测系统的不同功能模块或特性。
解决方案:
@Feature
注解。
@Epic("需求1")
//@Epic("需求13")
@Epics({
@Epic("需求2"),
@Epic("需求3")
})
@Feature("功能模块2")
@Features({
@Feature("功能模块3"),
@Feature("功能模块4")
})
@DisplayName("步骤方法验证")
public class StepMethodTest {
int result;
@Test
@DisplayName("加法步骤验证")
void testSum() {
//测试逻辑代码
}
@Test
@DisplayName("一个测试方法中添加多个大步骤")
void testMultipleSteps() {
//测试逻辑代码
}
@Test
@DisplayName("多个步骤验证")
void testSum2() {
//测试逻辑代码
}
}
用户故事:@Story/@Stories
应用场景:定义具体的需求、用户故事或场景等。
解决方案:@Story注解。
@Epic("需求1")
//@Epic("需求13")
@Epics({
@Epic("需求2"),
@Epic("需求3")
})
@DisplayName("步骤方法验证")
public class StepMethodTest {
int result;
@Story("子功能1")
@Stories({
@Story("子功能2"),
@Story("子功能3")
})
@Test
@DisplayName("加法步骤验证")
void testSum() {
//测试逻辑代码
}
@Story("子功能2")
@Stories({
@Story("子功能4"),
@Story("子功能3")
})
@Test
@DisplayName("一个测试方法中添加多个大步骤")
void testMultipleSteps() {
//测试逻辑代码
}
@Story("子功能7")
@Stories({
@Story("子功能3"),
@Story("子功能5")
})
@Test
@DisplayName("多个步骤验证")
void testSum2() {
//测试逻辑代码
}
}
复制代码
用户故事:@Story/@Stories
应用场景:定义具体的需求、用户故事或场景等。
解决方案:
@Story
注解
@Epic("需求1")
//@Epic("需求13")
@Epics({
@Epic("需求2"),
@Epic("需求3")
})
@DisplayName("步骤方法验证")
public class StepMethodTest {
int result;
@Story("子功能1")
@Stories({
@Story("子功能2"),
@Story("子功能3")
})
@Test
@DisplayName("加法步骤验证")
void testSum() {
//测试逻辑代码
}
@Story("子功能2")
@Stories({
@Story("子功能4"),
@Story("子功能3")
})
@Test
@DisplayName("一个测试方法中添加多个大步骤")
void testMultipleSteps() {
//测试逻辑代码
}
@Story("子功能7")
@Stories({
@Story("子功能3"),
@Story("子功能5")
})
@Test
@DisplayName("多个步骤验证")
void testSum2() {
//测试逻辑代码
}
}
package com.junit5.allure2casedesciption_l2.allurereport_addstep;
import io.qameta.allure.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.function.Executable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
@DisplayName("步骤方法验证-调用方法方式添加用例步骤")
@Epic("购物平台")
//@Epic("需求1")
/**
* @Epic与@Epics共存时,只能各一个,不能有多个
*/
@Epics({
@Epic("需求2"),
@Epic("需求3"),
})
@Feature("登录模块")
public class StepMethodTest {
int result;
/**
* 语法结构
* Allure.step("输入数字 3",()->{
* 测试步骤代码(可省略)
* });
*/
@Test
@DisplayName("加法步骤验证")
@Story("通过用户名和密码登录")
void testSum() {
Allure.step("输入数字 3");
int a = pressDigit(3);
Allure.step("输入加号");
String str = pressAddition();
Allure.step("输入数字 2");
int b = pressDigit(2);
Allure.step("点击等号");
result = sum(a, b);
Allure.step("验证结果是否正确");
assertEquals(5, result, a + str + b + "计算错误");
}
@Test
@DisplayName("一个测试方法中添加多个大步骤")
@Story("通过手机号登录")
void testSteps() {
List<Executable> list = new ArrayList<>();
//验证登录搜索后播放是否正常
Allure.step("步骤1",()->{
//步骤1代码
System.out.println("登录");
Allure.step("输入用户名");
String name = "admin";
Allure.step("输入密码");
String pwd = "123456";
Allure.step("点击登录");
String login = name+pwd;
// assert
list.add(()->assertEquals("admin123456",login));
//...
});
Allure.step("步骤2",()->{
//步骤2代码
System.out.println("搜索");
Allure.step("输入搜索内容名称");
Allure.step("点击搜索按钮");
Allure.step("获取搜索结果");
list.add(()->assertEquals("搜索成功","搜索成功"));
//...
});
Allure.step("步骤3",()->{
//步骤3代码
System.out.println("播放");
Allure.step("点击播放按钮");
Allure.step("等待2秒");
Allure.step("获取当前播放进度时间");
list.add(()->assertEquals("播放成功","播放成功"));
//...
});
assertAll(list);
}
private int pressDigit(int digit) {
return digit;
}
private String pressAddition() {
return "+";
}
public int sum(int... numbers) {
return IntStream.of(numbers).sum();
}
}
package com.junit5.allure2casedesciption_l2.allurereport_addstep;
import com.junit5.User;
import io.qameta.allure.Epic;
import io.qameta.allure.Feature;
import io.qameta.allure.Step;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @Step只能添加到非静态测试方法上
*/
@DisplayName("步骤方法验证-注解方式添加用例步骤")
@Epic("购物平台")
@Feature("订单模块")
public class StepAnTest {
int result;
/**
*@Step("步骤描述")
*/
@Test
@DisplayName("减法步骤验证")
@Step("--减法步骤验证")
void testSub() {
User user =new User("刘诗诗",28);
addUser(user);
int a = pressDigit(6);
String str = pressSubtraction();
int b = pressDigit(2);
result = subtract(a, b);
assertEquals(4, result, a + str + b + "计算错误");
}
@Step("输入的用户名和年龄为 {user.name},{user.age}")
private int addUser(User user) {
return user.getAge();
}
@Step("输入数字 {digit}")
private int pressDigit(int digit) {
return digit;
}
@Step("输入减号")
private String pressSubtraction() {
return "-";
}
@Step("减法计算")
public int subtract(int x, int y) {
return x-y;
}
}
复制代码
软件测试开发免费视频教程分享
划线
评论
复制
发布于: 刚刚阅读数: 3
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/30d01bb7cc06e2901c8dc4d3b】。文章转载请联系作者。
测试人
关注
专注于软件测试开发 2022-08-29 加入
霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284
评论