当前位置:网站首页>在MeterSphere接口测试中如何使用JMeter函数和MockJS函数
在MeterSphere接口测试中如何使用JMeter函数和MockJS函数
2022-07-01 16:43:00 【FIT2CLOUD飞致云】
MeterSphere开源持续测试平台的接口测试、性能测试均基于JMeter实现,且兼容JMeter中的函数。在使用MeterSphere做接口测试、准备测试数据时,经常需要使用JMeter函数来构造生成接口测试的测试数据。
由于数据准备过程中经常需要查看摸索JMeter函数的使用范围方法,为了备忘和便于查看,也为了让大家减少一些探究试验的时间,本文将对这部分内容做出总结和演示,希望对大家有所帮助。
- JMeter函数的设置使用
在MeterSphere平台,JMeter函数可以在接口、接口用例请求参数的QUERY参数、REST参数、请求体、前置操作脚本、后置操作脚本中设置使用。
1.1 常用的JMeter函数及调用
JMeter支持的所有函数均可以通过查看JMeter官方文档,或百度搜索相关文章等途径来了解。
函数调用的格式为:${__functionName(var1,var2,var3)}。
其中,__functionName为函数名,括号内是函数的参数,无参数时可以不使用括号,例如${_UUID}。
以下是常用的一些函数及使用示例:
1.2 在请求参数中使用JMeter函数
在MeterSphere中,可以在接口用例请求参数的QUERY参数、REST参数、请求体、前后置脚本中引用使用JMeter函数。
引用使用方法如下表所示(以生成UUID函数为例):
需要特别说明的是,在前置/后置脚本中也是可以引用使用JMeter函数的。
具体的使用方法:
① 在双引号内输入函数的调用方法,如图1-1所示;
② 以Python脚本中的引用为例,在“查询database列表接口用例”页面中,将以下脚本内容设置为前置脚本内容,如图1-1所示;
③ 然后执行用例,在“控制台”的输出内容中能够看到打印出的uuid和time函数生成的时间戳,如图1-2所示。
uuid="${__UUID()}";
strTime="${__time()}";
log.info("--------pre script begin-------------");
log.info("uuid="+uuid);
log.info("strTime="+strTime);
log.info("--------pre script end-------------");
图1-1 在前置脚本中使用JMeter函数
图1-2 控制台输出JMeter函数
1.3 在QUERY参数、REST参数中使用JMeter函数
在QUERY参数、REST参数中设置使用JMeter函数,具体操作方法为:
进入“接口用例”页面,在“请求参数”面板的“QUERY参数”选项卡中,选择如图1-3所示的铅笔图标“编辑”按钮,打开“参数设置”对话框,在对话框中选择设置并保存,如图1-4所示;也可以直接在在参数值的输入框输入“$”,之后从下拉JMeter函数列表中选择要使用的JMeter函数,如图1-5所示;
设置之后,执行用例时,平台会通过JMeter函数生成的参数值发出请求。
图1-3 选择打开“参数设置”对话框
图1-4 参数设置-设置JMeter函数
图1-5 参数设置-输入$在下拉列表中选择JMeter函数
1.4 具体场景演示示例
下面我们通过使用InfluxDB写入接口测试场景的过程,来演示JMeter函数的使用。
调用InfluxDB写入API的CURL命令如下,我们可以根据API定义以及CURL命令创建接口定义和接口用例。
#写入接口API curl调用
curl -i -XPOST 'http://10.1.13.12:8086/write?db=monitoringdb' --data-binary 'cpu_usage,host=10.1.10.131,app=dataease value=0.10 1632761023000000000'
#cpu_usage为measurement,类似关系数据库里的表, host为主机ID,app为dataease
操作步骤如下:
① 在“接口列表”页面,创建“InfluxDB写入接口”,设置请求协议为“POST”,路径为“/write”,如图1-6所示;
② 在“CASE”页面,选择“+添加”按钮,打开“创建接口用例”页面,创建写入接口用例,如图1-7、图1-8所示;
③ 根据CURL命令,可以看到我们需要设置QUERY参数db,以及请求体raw内容。如图1-9所示,添加QUERY参数db,设置值使用环境变量${dbname}。dbname变量已在环境中设置,值为“monitoringdb”。如图1-10所示,设置请求体,格式选择“raw”,内容设置为:
cpu_usage,host=${
_UUID},app=dataease value=${
usage} ${
_time()}000000
■ 使用JMeter函数__UUID作为host ID;
■ 使用__time函数生成13位的时间戳;
■ 使用usage变量,usage变量在前置脚本中使用python random函数计算,结果保存在usage变量中。
图1-6 创建写入接口
图1-7 选择创建写入接口用例
图1-8 添加设置QUERY参数db
图1-9 设置请求体-监控数据
图1-10 设置前置python脚本-生成usage并保存到变量
④ 保存并执行用例,在“响应内容”目录下的“请求内容”中,查看请求内容POST data,如图1-11所示。可以看到使用JMeter函数生成的数值,以及python random函数生成的值。
cpu_usage,host=e48222aa-e98e-4974-8dfb-df9a1aecc4cc,app=dataease value=0.00309123923176 1652670605313000000
图1-11 查看请求内容
- MockJS函数的设置使用
在MeterSphere中可在设置请求参数的QUERY参数、REST参数值时使用MockJS函数。
需要说明的是:
■ MockJS函数不能在请求参数的请求体、前后置脚本中使用;
■ MockJS函数可以选择多个函数组合生成参数值。
具体使用方法如下:
① 在“接口用例“页面,选择”请求参数“面板中的“QUERY参数”标签,打开“QUERY参数”选项卡;
② 在“QUERY参数”选项卡中,选择如图2-1所示的铅笔图标“编辑”按钮,打开“参数设置”对话框;
③ 在“参数设置”对话框中,选择“Mock数据”标签,打开“Mock数据”选项卡,在选项卡中的MockJS列表中选择添加MockJS函数,如图2-2所示。
MockJS函数支持随机生成布尔值、自然数、整数、浮点数、字符、字符串、日期、时间、日期时间、当前时间等参数值,具体可在MockJS函数列表中查看,并且可以通过选择函数后点击“预览”按钮查看生成效果。
图2-1 选择打开“参数设置”对话框
图2-2 参数设置-选择MockJS函数
也可以直接在在参数值的输入框输入“@”,之后从下拉MockJS函数列表中选择要使用的MockJS函数,如图2-3所示。
图2-3 直接在参数值输入框中输入@字符列出MockJS并选择
接下来通过一个创建接口用例设置参数值的场景演示一下具体的使用:
如图2-4所示,在“接口用例”页面中,添加两个QUERY参数:一个键为“pretty”, 值为“@boolean”;一个键为“serverName”,值为“@[email protected]”。执行用例后,可在响应体的“请求内容”选项卡中查看这些函数生成的随机值,如图2-5的“请求内容”所示。
■ “pretty”的@boolean函数生成的是false;
■ “serverName”的@[email protected]函数生成的是gl8Im02011-12-2116:10:31。
图2-4 MockJS函数(以@开头)
图2-5 请求内容中查看函数输出
- 总结
本文总结了在MeterSphere开源持续测试平台中使用JMeter函数、MockJS函数的方法和注意事项,并通过具体的接口测试场景演示了JMeter函数和MockJS的使用,希望对广大社区用户有所帮助。
边栏推荐
- Pytest learning notes (13) -allure of allure Description () and @allure title()
- 毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?
- How to repair the laptop that cannot connect to the wireless network
- [C language supplement] judge which day tomorrow is (tomorrow's date)
- P2592 [zjoi2008] birthday party (DP)
- 游戏行业安全选择游戏盾,效果怎么样?
- Research and investment strategy report of hydroxypropyl beta cyclodextrin industry in China (2022 Edition)
- 数据库系统原理与应用教程(005)—— yum 离线安装 MySQL5.7(Linux 环境)
- [live broadcast appointment] database obcp certification comprehensive upgrade open class
- String类
猜你喜欢
【Try to Hack】vulnhub DC4
Redis6.0 new features
Tutorial on the principle and application of database system (003) -- MySQL installation and configuration: manually configure MySQL (Windows Environment)
Dataframe gets the number of words in the string
C language input / output stream and file operation
String class
ShenYu 网关开发:在本地启用运行
VMware virtual machine failed during startup: VMware Workstation is incompatible with hyper-v
机器学习11-聚类,孤立点判别
C语言输入/输出流和文件操作
随机推荐
Are you still using charged document management tools? I have a better choice! Completely free
Soft test network engineer full truth simulation question (including answer and analysis)
[flask introduction series] cookies and session
FPN network details
China nylon 11 industry research and future forecast report (2022 Edition)
VMware 虚拟机启动时出现故障:VMware Workstation 与 Hyper-v 不兼容...
How to cancel automatic search and install device drivers for laptops
[pyg] document summary and project experience (continuously updated
游戏行业安全选择游戏盾,效果怎么样?
Tutorial on the principle and application of database system (003) -- MySQL installation and configuration: manually configure MySQL (Windows Environment)
模板引擎Velocity 基础
China sorbitol Market Forecast and investment strategy report (2022 Edition)
Rhcsa Road
Alibaba cloud, Zhuoyi technology beach grabbing dialogue AI
AI college entrance examination volunteer filling: the gods of Dachang fight, and candidates pay to watch
重磅披露!上百个重要信息系统被入侵,主机成为重点攻击目标
Rhcsa Road
How to optimize repeated if err in go language= Nil template code?
How to use etcd to realize distributed /etc directory
巴比特 | 元宇宙每日必读:奈雪币、元宇宙乐园、虚拟股票游戏...奈雪的茶这波“操作拉满”的营销活动你看懂了吗?...