参数化
如官网所述,我们可以利用@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)); } |
数据文件驱动
官网中给出了@CsvFileSource的方法:
csv数据文件驱动实例:
csv数据文件:
pdd xiaomi pdd |
测试用例demo
@ParameterizedTest @CsvFileSource(resources = "/data/SearchTest.csv") void 选择(String keyword){ ArrayList<String> arrayList = searchpage.inputSearchInfo("xiaomi").addSelected(); } |
利用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> |
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); |
利用官网提供的信息可以封装方法对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; } } |
再来看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)); } |
效果演示:
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理