jmeter之groovy对mongodb操作

背景

使用Jmeter做接口测试时需要初始数据,需要连接数据库,然而我们的后端使用的是MongoDB。

操作步骤

2.1 导入将连接MongoDB 所涉及的jar包导入jmeter的扩展lib

1)扩展lib的地址:\works\apache-jmeter-3.3\lib\ext

涉及jar如下:

gmongo-1.5.jar

mongo-java-driver-3.4.0-rc1.jar

mongodb-driver-3.4.0.rc1.jar

2)重新启动jmeter

2.2 添加JSR请求or前、后置处理器

2.2.1 添加JSR请求采样器

操作步骤:右击【线程组】》点击【添加】》点击【Sampler】》点击【JSR223 Sampler】。

jmeter之groovy对mongodb操作_第1张图片

2.2.2 添加前,后置处理器-JSR

点击【线程组】or 【Sampler】》点击【添加】》点击【前置/后置处理器】》点击【JSR223 preprocessor】

jmeter之groovy对mongodb操作_第2张图片

2.3 JSR请求or 前、后置处理器

2.3.1 添加连接MongoDB自定义参数

jmeter之groovy对mongodb操作_第3张图片

2.3.1 JSR请求

1)不需要通过帐号&密码连接

jmeter之groovy对mongodb操作_第4张图片

内容如下:

importcom.mongodb.*

importcom.gmongo.GMongoClient

importcom.mongodb.MongoCredential

importcom.mongodb.ServerAddress

//创建mongoClient连接 无密码

GMongoClientclient = new GMongoClient(new ServerAddress("${IP}",${Port}));

//连接指定的数据库,使用已经定义的参数

defDB=client.getDB("${AuthDB}");

//find()出来的是一个数组对象

DB.table1.find();

//出来的是查到的第一个对象

DB.table1.findOne([:]);

//插入数据

DB.table1.insert([Appid:'E8CUJW99',AppName:'TEST', Desc:111, Status:1, AppKey:'1111', Creater:'tester',Updater:'tester', TextEnabled:true, ImageEnabled:true, VedioEnabled:true,AudioEnabled:true]);

//删除数据

DB.table1.remove({'Appid':'E8CUJW99'});

2)通过帐号密码连接

jmeter之groovy对mongodb操作_第5张图片

内容如下:

importcom.mongodb.*

importcom.gmongo.GMongoClient

importcom.mongodb.MongoCredential

importcom.mongodb.ServerAddress

//创建mongoClient连接 有密码

credentials =MongoCredential.createCrdential('${userName}','${pwd}','${AuthDB}' as char[])

GMongoClientclient = new GMongoClient(new ServerAddress("${IP}",${Port}),[credentials])

log.info("test============================");

//连接指定的数据库,使用已经定义的参数

defDB=client.getDB("${AuthDB}");

//find()出来的是一个数组对象

DB.table1.find();

//出来的是查到的第一个对象

DB.table1.findOne([:]);

//插入数据

DB.table1.insert([Appid:'E8CUJW99',AppName:'TEST', Desc:111, Status:1, AppKey:'1111', Creater:'tester',Updater:'tester', TextEnabled:true, ImageEnabled:true, VedioEnabled:true,AudioEnabled:true]);

//删除数据

DB.table1.remove({'Appid':'E8CUJW99'});

踩过的坑

3.1 写入mongoDB报javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of

截图

jmeter之groovy对mongodb操作_第6张图片

原因:

1)写入格式不对

2)写入数据不完整,有5个字段不能为空,但只写了2个。

解决方法:

1)  查询表中已有数据并输出到日志

例如:log.info("===test==="+ DB.table1.findOne([:]));

查询结果:

2)  将查询的数据放入insert(注:要将id,写入时间,修改时间字段去掉)

例如:DB.table1.insert([Appid:'E8CUJW99',AppName:'TEST', Desc:111, Status:1, AppKey:'1111', Creater:'tester', Updater:'tester',TextEnabled:true, ImageEnabled:true, VedioEnabled:true, AudioEnabled:true]);

3.2 写入MongoDB报javax.script.ScriptException: groovy.lang.MissingPropertyException:No

such property:XXXX for class:ScriptXX

原因:字符没有加单引号('')

解决方法:写入MongoDB时含字符串的字段值加上单引号('')即可。

你可能感兴趣的:(jmeter之groovy对mongodb操作)