jmeter数据提取与处理加工-json提取器/正则提取/beashell/压测
jmeter用于做压测或者自动化测试拥有灵活、编写快速的优点
下面将展示常见的响应处理方法
1.json提取器
1.1 键处在json体第二层(或者大于2层),已知同级的一个键expenseTypeName,取出另一个invoiceOID/expenseTypeIconURL
$..[?(@.expenseTypeName"机票")].invoiceOID;$..[?(@.expenseTypeName"机票")].expenseTypeIconURL
$..[?(@.setOfBooksName"${setOfBooksName}")].id
1.2 键处在json体第一层
$.invoiceOID
下面给出样例
响应体
{
"code": 200,
"data": {
"ext": {},
"size": 1,
"items": [
{
"rType": "csdn",
"id": "5fa90f793af9143251b661dc",
"rid": "程序员必备的浏览器插件",
"type": "hot_word",
"url": "",
"additionalResourceContent": {
"image": [],
"description": "",
"title": ""
},
"username": ""
}
]
},
"message": "success"
}
提取出id于message
id 提取公式为$..[?(@.rid"程序员必备的浏览器插件")].id或者$..id(大于等于2层,用..查找)
message 提取公式为 $.message(第一层用.查找)


json提取器类似于xpath
$.data.items[0].id(取date里第一个items中的id)
Json Path表达式:
JsonPath
描述
$
根节点
@
当前节点
.or[]
子节点
..
选择所有符合条件的节点
所有节点
[]
1.3 提取响应所有数据
使用$ 提取响应所有数据

2.正则提取器
例 "access_token":"(.+?)"
.*((\d){17}.xlsx)(匹配abdc20201029112324567.xlsx) .为任意字符 *代表多个 ?为非贪婪模式 (\d)为数字 {17}为17次
其中()内为要匹配的值
正则返回的值是一个list
下面假设accessToken匹配到了多个值
accessToken_matchNr 计数(正则表达式 返回结果多个时,且匹配数字是-1, 如果返回结果只有一个则不存在code_matchNr,且匹配数字是1)

3.jmeter压力测试
压测使用无头模式,生成jtl文件,生成html报告
./jmeter.sh -JConcurrency=20 -JdurationTime=600 -n -t /opt/LoadTest/script/ExpenseReportCreateInvoice.jmx -l /opt/LoadTest/result/ExpenseReportCreateInvoice20.jtl -e -o /opt/LoadTest/result/ExpenseReportCreateInvoice20
其中Concurrency为线程数
durationTime为持续时间
-n -t为无头模式
-l为生成jtl文件
-e -o为生成html报告
4.两个线程组织间传递变量(全局变量),一般都用来传递token
使用beanshell 将线程组1的变量设为全局变量
${__setProperty(accessToken,${accessToken_jituan},)};


线程组2接收变量
${__P(accessToken,)}


浙公网安备 33010602011771号