1.问题
通过jmeter内置函数造出来的数据,不够贴近真实,展示时效果不太友好
比如手机号,使用随机11位数字的方式实现,但与真实的情况相差甚远
2.分析
如果数据工厂的库就好了,根据不同数据的定义规则,自动生成相对真实的数据
python有Faker库,google后发现java有个类似的库:JavaFaker
将jar包加载到jmeter中Library中,就能轻松使用
3.实现
3.1.jar包下载
进入maven仓库(https://mvnrepository.com/),分别下载
- javafaker-1.0.2.jar
- snakeyaml-1.23.jar
3.2.加载jar包
可以直接将jar包放置在jmeter安装包的lib目录中
也可以在TestPlan中直接加载jar包,如下图
![](https://img.haomeiwen.com/i14095281/c4a609224cf84393.png)
3.3.使用faker
首先import类,将其加载到线程的上下文中
import com.github.javafaker.Faker
import java.util.Locale
def filename = "${filename}-${__threadNum}.txt"
def myfile = new File("${file_path}", filename)
def faker = new Faker(Locale.CHINA)
if(myfile.exists()) {
myfile.delete()
}
vars.putObject('myfile', myfile)
vars.putObject('faker', faker)
然后就可以调用相应的方法生成数据
def myfile = vars.getObject('myfile')
def faker = vars.getObject('faker')
myfile << "${faker.name().name()}${sep}${faker.internet().ipV4Address()}${sep}${__Random(0,99,)}\n"
![](https://img.haomeiwen.com/i14095281/a8adbc98b8af4a21.png)
生成的数据如下
杜思聪,147.231.115.83,68
彭志泽,254.165.224.174,70
熊煜城,144.84.125.113,4
夏子轩,143.144.2.147,98
杨浩然,230.106.3.163,25
洪振家,85.228.58.118,20
胡哲瀚,59.139.103.149,84
罗立辉,143.166.191.189,23
孙文昊,241.194.137.192,39
秦立辉,30.232.105.91,14
网友评论