【实战】Jmeter连接mongoDB数据库

news2025/2/22 1:29:40

作为一名测试人员,做接口测试难免要进行基础数据校验。Jmeter本身对mysql支持的非常好,但是对mongoDB、cassandra等数据库要怎么连接并校验数据呢?本文以mongodb为例进行说明。

一、如果你有Java基础,可以编写java代码访问mongo
首先,下载mongo-java-driver-2.13.2.jar,或者更高版本。将驱动包放在 lib目录下或者lib\ext目录下即可。

其次,右键测试计划,定义一些用户参数。

这里主要是定义mongodb的基本信息,大家可以根据实际情况填写。

然后,就是我们的重点部分:添加JSR223Sampler,编写Java脚本。

代码如下:

importcom.mongodb.*
importcom.gmongo.GMongoClient
importcom.mongodb.MongoCredential
importcom.mongodb.ServerAddress
importjava.text.DateFormat
importjava.text.SimpleDateFormat
 
MongoCredentialcredentials = MongoCredential.createCredential('${mongoname}','${mongoauth}' ,'${mongopwd}'as char[])
GMongoClientclient = new GMongoClient(newServerAddress('${mongoip}',${mongoport}),[credentials])
//连接数据库
defdb=client.getDB("${dbname}")
 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd00:00:00")
 
 
def coll=db.getCollection('表名').aggregate([[$match:[type:"1",areaType:"1",areaCode:"****",statisticsDate:"20190825",faultType:"0",faultCode:"0",machineModel:"2"]],
[ $group :["_id" :'$areaName', "onlineNO" : [$sum : '$onlineNo'],"faultNo":[$sum : '$faultNo']]]])
def RpData=""
coll.results().each
{
    RpData =RpData+it.toString()+"\r\n"
}
 
SampleResult.setResponseData(RpData)

 运行结果如下:

 

二、如果测试人员java基础不好,或者只会用python编写脚本怎么办呢?

我们可以使用jmeter的OS Process Sampler完成这个任务。

首先,添加OS ProcessSampler,并配置好参数。

其次,编写python脚本(脚本名称和路径要和上图配置的一致),在脚本中实现连接数据库的功能。

脚本如下:

#coding=utf-8
from pymongoimport MongoClient
from sys importargv
from datetimeimport datetime

#建立MongoDB数据库连接
client =MongoClient("mongodb://用户名:密码@ip:port")
time=argv[1]
#time='20190313'
year=int(time[:4])
if time[4]==0:
    mon=int(time[5])
else:   
    mon=int(time[4:6])
day=int(time[6:])
#连接所用集合,也就是我们通常所说的表,test为表名
 
result = db.test.find_one({"WorkTime":{"$gt":0},'ReportTime':datetime(year,mon, day, 16, 0)},{ "LoginID":1,"WorkTimeLine": 1})
print (result)

response中就会打印出loginid和worktimeline的值。

再利用正则提取器取出想要的数据,进行数据校验即可。

 

第一种方法网上的教程不少,也是比较方便的方法,如果测试人员有一定的Java基础,还是推荐用这种方法。

第二种方法是针对Java编程有困难的测试人员,利用python脚本也可以实现数据校验的任务,但是在实际的测试中可能会出现编码等问题(比如打印字符串格式的数据时,结果中有字母“u”),导致正则表达式取不出想要的数据,这就需要根据实际情况调整正则表达式的写法,这个需要大家注意一下。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

文档获取方式:
 
加入我的软件测试交流群:1007119548免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用numpy创建数组

目录 一:使用numpy.array() 二:使用np.zeros() 三:np.full() 四:numpy.ones() 在Python的NumPy库中,有几种不同的方法可以创建数组。我们演示下不同方式创建数组的例子 一:使用numpy.array() np.array…

python 用bisect来管理已排序的序列

已排序的序列可以用来进行快速搜索,而标准库的 bisect 模块给我们提供了二分查找算法。bisect.insort 让已排序的序列保持有序 bisect 模块包含两个主要函数,bisect 和 insort,两个函数都利用二分查找算法来在有序序列中查找或插入元素。 用…

133基于matlab的智能微电网粒子群优化算法

基于matlab的智能微电网粒子群优化算法,输出微型燃气轮机、电网输入微网运行计划、储能运行计算。程序已调通,可直接运行。 133智能微电网粒子群优化算法 (xiaohongshu.com)

P9842 [ICPC2021 Nanjing R] Klee in Solitary Confinement 题解(SPJ!!!)

[ICPC2021 Nanjing R] Klee in Solitary Confinement 题面翻译 给定 n , k n,k n,k 和一个长为 n n n 的序列,你可以选择对区间 [ l , r ] [l, r] [l,r] 的数整体加上 k k k,也可以不加。最大化众数出现次数并输出。 题目描述 Since the travele…

Kali Linux保姆级教程|零基础从入门到精通,看完这一篇就够了!(附工具包)

作为一名从事网络安全的技术人员,不懂Kali Linux的话,连脚本小子都算不上。 Kali Linux预装了数百种享誉盛名的渗透工具,使你可以更轻松地测试、破解以及进行与数字取证相关的任何其他工作。 今天给大家分享一套Kali Linux资料合集&#xf…

Angular系列教程之变更检测与性能优化

文章目录 前言变更检测的原理脏检查OnPush策略 示例代码总结 前言 Angular 除了默认的变化检测机制,也提供了ChangeDetectionStrategy.OnPush,用 OnPush 可以跳过某个组件或者某个父组件以及它下面所有子组件的变化检测。 在本文中,我们将探…

最常见的十道面试题-反射与集合

面试题一:Java是值传递还是引用传递? Java是值传递。这意味着当将一个变量传给一个方法的时候,我们实际上是传递的是这个变量的的副本。 但是对于对象来说,我们传递的是其的副本,我们不可以改变对象的引用本身&#…

基于Java SSM框架实现智能停车场管理系统项目【项目源码+论文说明】

基于java的SSM框架实现智能停车场管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个智能停车场管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将…

Maven工程 — 继承与聚合 相关知识点详解

简介:这篇帖子主要讲解Maven工程中的继承与聚合的相关知识点,用简洁的语言和小编自己的理解,深入浅出的说明Maven工程的继承与聚合。 目录 1、继承 1.1 继承关系的实现 1.2 版本锁定 2、聚合 2.1 聚合方法 3、总结 1、继承 图 1-1 继承…

CORS漏洞学习

CORS漏洞属于一个协议漏洞,具体是由于同源策略的设置问题触发的漏洞,漏洞利用条件较为苛刻,但实战中也常见。 首先要了解同源策略 什么是同源策略? 同源策略是一种Web浏览器安全机制,旨在防止网站相互攻击。 同源策…

Angular系列教程之路由守卫

文章目录 前言路由守卫的类型CanLoadCanActivateCanActivateChildCanDeactivateResolve总结 前言 在Angular中,路由守卫是一个非常有用的功能,可以帮助我们控制用户在导航过程中的权限和访问限制。通过使用路由守卫,我们可以拦截导航并根据需…

使用@Slf4j后引入log,idea标红

引入Slf4j注解 idea标红Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到时,不妨关闭菜单再打开试下

STM32+HAL库驱动ADXL345传感器(SPI协议)

STM32HAL库驱动ADXL345传感器(SPI协议) ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意(重点部分)核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

利用HTML和CSS实现的浮动布局

代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>*{m…

0基础学java-day27(正则表达式)

一、正则快速入门 1 为什么要学习正则表达式 package com.hspedu.regexp;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** author 林然* version 1.0* 体验正则表达式的威力&#xff0c;给我们文本处理带来哪些好处*/ public class Regexp_ {public sta…

Spark与HBase的集成与数据访问

Apache Spark和Apache HBase分别是大数据处理和分布式NoSQL数据库领域的两个重要工具。在本文中&#xff0c;将深入探讨如何在Spark中集成HBase&#xff0c;并演示如何通过Spark访问和操作HBase中的数据。将提供丰富的示例代码&#xff0c;以便更好地理解这一集成过程。 Spark…

c语言将csv文件中的XY轴数据转换为html波形图

目标&#xff1a; c语言实现一个最简化的csv转html波形图显示方案。 csv文件格式&#xff1a; 共两行数据&#xff0c;第一行是x轴数据&#xff0c;第二行是y轴数据。 csv文件名分为3段: 波形图名称&#xff0c;x轴名称&#xff0c;y轴名称。 c代码&#xff1a; int csv2html…

AP上线配置流程

AP工作模式 相应地&#xff0c;AR路由器的WLAN工作模式分为FAT AP和AC两种模式&#xff0c;不同的模式对应不同的使用场景。 FAT AP模式&#xff1a;AR路由器作为FAT AP&#xff0c;独立为用户提供WLAN接入服务&#xff0c;无线网络的配置在FAT AP上单独配置。FAT AP模式主要…

2024中国国际光伏展

2024中国国际光伏展将是中国举办的一个重要的展览会&#xff0c;专门展示光伏技术和产业的最新发展。该展览会将吸引国内外光伏企业、研究机构、政府机构和专业人士参展和参观。 在2024年的中国国际光伏展上&#xff0c;参展商将展示他们最新的光伏技术、设备和产品&#xff0c…