当前位置:网站首页>在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的使用,希望对广大社区用户有所帮助。
边栏推荐
- 【C补充】【字符串】按日期排序显示一个月的日程
- Buuctf gold III
- Défaillance lors du démarrage de la machine virtuelle VMware: le poste de travail VMware n'est pas compatible avec hyper - V...
- China carbon disulfide industry research and investment strategy report (2022 Edition)
- SQL question brushing 586 Customers with the most orders
- Germany if was crowned with many awards. How strong is this pair of headphones? In depth evaluation of yinpo GTW 270 hybrid
- Soft test network engineer full truth simulation question (including answer and analysis)
- How does go use symmetric encryption?
- Concatenate strings to get the result with the smallest dictionary order
- 【C语言基础】12 字符串
猜你喜欢

6月刊 | AntDB数据库参与编写《数据库发展研究报告》 亮相信创产业榜单

National Security Agency (NSA) "sour Fox" vulnerability attack weapon platform technical analysis report

Redis 分布式鎖

Girls who want to do software testing look here

阿里云、追一科技抢滩对话式AI

Flux d'entrées / sorties et opérations de fichiers en langage C

Activity的生命周期和启动模式详解

sql刷题584. 寻找用户推荐人

Introduction to software engineering - Chapter 6 - detailed design
![[JetsonNano] [教程] [入门系列] [三] 搭建TensorFlow环境](/img/0e/52e37527bc717c7a55741725087bad.png)
[JetsonNano] [教程] [入门系列] [三] 搭建TensorFlow环境
随机推荐
Leetcode 77 combination -- backtracking method
Research and investment strategy report of China's sodium sulfate industry (2022 Edition)
判断一棵二叉树是否为平衡二叉树
Please, stop painting star! This has nothing to do with patriotism!
Alibaba cloud, Zhuoyi technology beach grabbing dialogue AI
Building blocks for domestic databases, stonedb integrated real-time HTAP database is officially open source!
VMware 虛擬機啟動時出現故障:VMware Workstation 與 Hyper-v 不兼容...
UML tourism management system "suggestions collection"
GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速
AI高考志愿填报:大厂神仙打架,考生付费围观
C語言輸入/輸出流和文件操作
How to optimize repeated if err in go language= Nil template code?
sql刷题586. 订单最多的客户
Free lottery | explore the future series of blind box digital copyright works of "abadou" will be launched on the whole network!
【flask入门系列】Cookie与Session
AI college entrance examination volunteer filling: the gods of Dachang fight, and candidates pay to watch
Redis6.0 新功能
sql刷题627. 变更性别
Red team Chapter 10: ColdFusion the difficult process of deserializing WAF to exp to get the target
如何使用 etcd 实现分布式 /etc 目录