使用Datafaker使用快速生成模拟测试数据
什么是Datafaker?
Datafaker是一个强大的Java库,专门用于生成逼真的测试数据。它可以帮助开发人员、QA工程师和数据科学家快速创建大量模拟数据,用于测试、演示或原型开发。
安装Datafaker
目前最新版本2.4.2,最要JDK 17+ 支持,JDK8可以使用1.7.0版本
<dependency>
<groupId>net.datafaker</groupId>
<artifactId>datafaker</artifactId>
<version>1.7.0</version>
</dependency>
基本使用方法
// 创建Faker实例,指定中文语言,不是所有生成结果都支持中文
Faker faker = new Faker("zh-cn");
// 生成姓名
String name = faker.name().fullName();
// 生成地址
String address = faker.address().fullAddress();
// 生成电话号码
String phoneNumber = faker.phoneNumber().cellPhone();
// 生成自定义格式数据
String customId = faker.regexify("[A-Z]{2}[0-9]{7}");
常用数据类型生成
Datafaker采用不同的Provider来生成不同类别的数据,目前包含以下几个分类,具体参考https://www.datafaker.net/documentation/providers/:
- BaseProviders(日常数据)
String creditCardNumber = faker.business().creditCardNumber();
- MovieProviders(电影、剧集、书籍相关)
String quote = faker.movie().quote();
- FoodProviders(各类食品相关)
String dish = faker.food().vegetable();
- SportProviders(各类体育运动相关)
String positions = faker.baseball().positions();
- VideoGameProviders(视频游戏相关)
String game = faker.esports().game();
高级功能
- 批量生成
//生成最少3个,最多5个姓名 List<String> names = faker.collection( () -> faker.name().firstName(), () -> faker.name().lastName()) .len(3, 5) .generate();
- 日期格式化
//生成未来一小时内的时间 String future = faker.date().future(1, TimeUnit.HOURS, "YYYY MM.dd hh:mm:ss"); //生成过去一小时内时间 String past = faker.date().past(1, TimeUnit.HOURS, "YYYY-MM-dd hh:m m:ss"); //生成1-99岁的生日 String birthday = faker.date().birthday(1, 99, "YYYY/MM/dd");
- 密码和任意字符串生成
//生成8位随机密码,至少包含两个大写字母,3位数字 String password = faker.text().text(Text.TextSymbolsBuilder.builder() .len(8) .with(EN_UPPERCASE, 2) .with(DIGITS, 3).build());
- 表达式
//生成类似testqwastest的字符串 String expression = faker.expression("#{letterify 'test????test'}"); //生成类似testSKDLtest的字符串,字母大写 String expression1 = faker.expression("#{letterify 'test????test','true'}");
- 唯一值
//生成的返回值唯一不重复. String firstUniqueInstrument = faker.unique().fetchFromYaml("music.instruments"); // "Flute" String secondUniqueInstrument = faker.unique().fetchFromYaml("music.instruments"); // "Clarinet"
实际应用场景
- 数据库填充测试
- API测试数据准备
- 性能测试数据生成
- 演示数据创建
- 机器学习训练数据
更新用法可以参考 https://www.datafaker.net/documentation/getting-started
总结
Datafaker是一个简单易用但功能强大的测试数据生成工具,可以显著提高开发和测试效率。通过本文介绍的大家应该能够开始在自己的项目中使用Datafaker了吧。