相关测试元件包括:
- 定时器: JSR223 Timer
- 前置处理器:JSR223 PreProcessor
- 采样器: JSR223 Sampler
- 后置处理器:JSR223 PostProcessor
- 断言: JSR223 断言
- 监听器: JSR223 Listener
JSR223 可以支持Groovy、Javascript、Python等脚本
下载python相关jar包
地址:https://search.maven.org/artifact/org.python/jython-standalone
下载好后将其放到jemter的/lib/ext路径下,重启jmeter就可以了
实例
- 下面是测试中遇到一个请求的响应体一部分
"lists": {
"datagrid_hkfsbg": {
"gridId": null,
"limit": null,
"list": [
{
"hjszd": "迁移无",
"zhiwu": "",
"dwyb": "",
"glrywlsh": "QY744086",
"dwdh": "",
"gjjzxbh": "",
"gtjkrgjjzh": "",
"gtjkrzjlx": "",
"jtdqfwts": "",
"dkjchlx": "01"
}
],
"start": null,
"total": null
}
}
- 但是我们在这个请求后有一个必要的请求的请求体包含如下json格式内容如下:
[
{
"hjszd": "迁移无",
"zhiwu": "",
"dwyb": "",
"glrywlsh": "QY744086",
"dwdh": "",
"gjjzxbh": "",
"gtjkrgjjzh": "",
"gtjkrzjlx": "",
"jtdqfwts": "",
"dkjchlx": "01"
"__id___": "0",
"_row_": "0"
}
]
- 我们和前面请求响应体内容一比较,发现这个请求参数值是前面响应体的一部分,只是多了两个键值对
"__id___": "0",
"_row_": "0"
-
我们使用json提取器获取响应体此部分内容
image.png -
然后添加JSR223 Sampler(前面添加jar包后,重启后在此处就能选择Python语言)
image.png - 然后在下面添加我们的python脚本
import json
s=vars.get("list") #获取jmeter的参数
s=json.loads(s) #JSON 字符串解码为 Python 对象
for i in range(len(s)):
s[i]["__id___"]=str(i)
s[i]["_row_"]=str(i)
s=json.dumps(s,ensure_ascii=False) #将 Python 对象编码成 JSON 字符串
vars.put("list_new",s)
log.info(u"list_new:" + s)
image.png
- 然后在jmeter请求中使用${list_new}就可以了
网友评论