在使用 MeterSphere 做接口测试过程中,有一些接口场景需要去查数据库,然后将查到的数据作为请求参数传递,MeterSphere 默认只支持 Mysql 、Oracle、SQLServer 等数据库查询,如果我们想查 Redis 和 MongoDB 等非关系型数据库,我们需要通过脚本写代码方式去实现,以下以 MongoDB 为例介绍如果通过代码连接非关系型数据库。
具体步骤如下:
连接 MongoDB 是需要用到 MongoDB 的驱动包,可以去附件列表里下载驱动包,首先进入【项目设置】-【文件管理】模块,将驱动包上传到平台。
在接口的前后置操作中添加前后置脚本,添加连接 MongoDB 的代码,脚本类型选择 groovy 。
脚本内存如下:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.BsonDocument;
import org.bson.BsonString;
import org.bson.Document;
// dbUser:用户名,dbPwd:密码,ip:mongo服务器地址
String mongoUri = "mongodb://dbUser:dbPwd@ip:端口/admin";
MongoClientURI connStr = new MongoClientURI(mongoUri);
MongoClient mongoClient = new MongoClient(connStr);
try {
MongoDatabase database = mongoClient.getDatabase("数据库名");
// 取得集合/表 someonetable 句柄
MongoCollection<Document> collection = database.getCollection("someonetable");
// 准备写入数据
Document doc = new Document();
doc.append("key", "value");
doc.append("username", "jack");
doc.append("age", 31);
// 写入数据
collection.insertOne(doc);
System.out.println("insert document: " + doc);
// 读取数据
BsonDocument filter = new BsonDocument();
filter.append("username", new BsonString("jack"));
MongoCursor<Document> cursor = collection.find(filter).iterator();
while (cursor.hasNext()) {
log.info("find document: " + cursor.next());
log.info("age: " + cursor.next().get("age"));
}
//删除数据
collection.deleteOne(Filters.eq("username","jack"));
log.info("删除成功");
} finally {
//关闭连接
mongoClient.close();
}
将用户名、密码、ip、端口、数据库名替换成自己 MongoDB 的信息,然后点击调试,结果如下:
总结:MeterSphere 默认只支持 Mysql 、Oracle、SQLServer 等关系型数据库的连接,如果我们想连接 Redis 和 MongoDB 等非关系型数据库,我们可以通过代码方式去实现。