自动化测试用例如何进行参数化

利用CSV、yaml文件等进行数据文件驱动(基于Junit5 @CSVSource、@MethodSource等)

 

Junit5官方说明地址:https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
中文版:https://sjyuan.club/junit5/user-guide-cn/

参数化
如官网所述,我们可以利用@ParameterizedTest+@ValueSource或@CsvSource进行参数化设置

 

参数化实例:
以雪球APP股票搜索功能为例
@ParameterizedTest
@CsvSource({
"滴滴,滴滴出行",
"alibaba,阿里巴巴",
"sougou,搜狗"
})
public void 搜索股票(String searchInfo,String exceptName) {
String name = searchpage.inputSearchInfo(searchInfo).getAll().get(0);
assertThat(name,equalTo(exceptName));
}
1
2
3
4
5
6
7
8
9
10
数据文件驱动
官网中给出了@CsvFileSource的方法

csv数据文件驱动实例:
csv数据文件:
pdd
xiaomi
pdd
1
2
3
测试用例demo

@ParameterizedTest
@CsvFileSource(resources = "/data/SearchTest.csv")
void 选择(String keyword){
ArrayList<String> arrayList = searchpage.inputSearchInfo("xiaomi").addSelected();
}
1
2
3
4
5
利用yaml文件进行数据文件驱动
先看如何对yaml文件进行数据操作
官方地址:https://github.com/FasterXML/jackson-dataformats-text/tree/master/yaml
阮一峰教程:http://www.ruanyifeng.com/blog/2016/07/yaml.html
从官网中可以得到如下信息
Maven dependency
To use this extension on Maven-based projects, use following dependency:

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.9.2</version>
</dependency>
1
2
3
4
5
Usage
Simple usage
Usage is as with basic JsonFactory; most commonly you will just construct a standard ObjectMapper with com.fasterxml.jackson.dataformat.yaml.YAMLFactory, like so:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
User user = mapper.readValue(yamlSource, User.class);
1
2
利用官网提供的信息可以封装方法对yaml文件进行操作:
public static GlobalConfig load(String path){
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
try {
GlobalConfig config = mapper.readValue(GlobalConfig.class.getResource(path), GlobalConfig.class);
return config;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
1
2
3
4
5
6
7
8
9
10
再来看Junit5提供的一个方法 @MethodSource


利用此方法加载yaml文件中的数据,进行参数传递,完成数据文件驱动的目的
yaml文件:
xqDemoConfig:
username: 888
password: 666
testdata:
滴滴: 滴滴出行
alibaba: 阿里巴巴
sougou: 搜狗

测试用例demo

@ParameterizedTest
@MethodSource("YamlData")
public void 搜索股票2(String searchInfo,String exceptName) {
String name = searchpage.inputSearchInfo(searchInfo).getAll().get(0);
assertThat(name,equalTo(exceptName));

}

static Stream<Arguments> YamlData(){
GlobalConfig config =GlobalConfig.load("/data/globalConfig.yaml");
List<Arguments> list = new ArrayList<>();
Arguments arguments = null;
for (String key : config.xqDemoConfig.testdata.keySet()) {
Object value = config.xqDemoConfig.testdata.get(key);
arguments = arguments(key, value);
list.add(arguments);
}
return Stream.of(list.get(0),list.get(1),list.get(2));

原文链接:https://blog.csdn.net/weixin_43291944/article/details/95061580

posted @   小强找BUG  阅读(1484)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-05-07 测试工具和测试自动化-新华三
2019-05-07 测试开发面试题
点击右上角即可分享
微信分享提示