上节课展示了JMeter的基础用法:录制回放功能,断言,聚合报告。但是在无UI下如何进行接口的访问呢?如何正确get参数传递和HTTP如何正确使用。尤其是在无UI下进行接口的访问。小哥哥带着你用漫画来学习JMeter,让你在轻松的环境里了解新知识。
要创建采样器,只需要二步
-
添加 “Thread Group”
-
添加 “Http Request” Sampler
下面的接口逻辑如下:
接口介绍
我们使用的接口是自己创建的程序,同学可以自行寻找其它接口进行训练!
下面就是大名鼎鼎的登录接口:
Path: /api/v1/user/login Method: POST Header: { Content-Type : application/json } request body: "authRequest": { "userName": "{{login_email}}", "password": "{{login_pwd}}"}
我们向/api/v1/user/login发送请求,发送的header中需要包括Content-Type : application/json,请求体中如果含有:
"authRequest": { "userName":"{{login_email}}", "password": "{{login_pwd}}"}。
服务器会给我们一个反馈,它会验证邮箱和密码是否正确。如果login_email和login_pwd错误,我们将会得到Fail下面的信息:
Fail: { "code": "401", "message": "login fail"}
如果login_email和login_pwd正确,将会得到Success下面的信息:
Success: { "code": "200", "message": "login success", "access_token": "[access_token]" }
有了这个access_token,我们就拿到了许可证。
浏览菜单接口
Path: /api/v1/menu/list Method: GET Header: { Content-Type : application/json, access_token : [access_token] } request parameter:type 可选参数: breakfast, lunch, dinner - Success: { "breakfast": [{ "menu_nunber": "01", "menu_price": 5.50, "menu_name": "小笼包"}, { "menu_nunber": "02", "menu_price": 3.00, "menu_name": "八宝粥" }, …… ] }
订单确认接口
Path: /api/v1/menu/confirm Method: POST Header: { Content-Type : application/json, access_token : [access_token] } request body: { "order_list": [ { "menu_nunber" : "01", "number" : 1 }, { "menu_nunber" : "03", "number" : 2 } ] } Success : { "code": "200", "message": "Order success.", "total": 3 #订单菜品总数} Fail : 如果header中的 access_token 错误 { "code": "401", "message": "Please login first."}
注销接口
Path: /api/v1/user/logout Method: DELETE Header: { Content-Type : application/json, access_token : [access_token] } request parameter & body:None Success : { "code": "200", "message": "logout success"} Fail : 如果header中的 access_token 错误{
"code": "401",
"message": "Unknown user info, logout fail."}
采样器中定义请求名称:用户登录
配置 Host 、Port、Path = /api/v1/user/login
配置 Method = POST
HttpRequest中的body中添加请求参数
{
“authRequest”: {
“userName”: “user01”,
“password”: “pwd”
}
}
在Http Request中添加 Http Header Manager, 管理该请求的header信息
添加 “View Result Tree” 用于查看 请求/响应 详情
在Http Header Manager中配置如下参数Content-Type :application/json
运行并在View Result Tree中检查运行结果
创建浏览菜单接口请求,添加HttpRequest请求。配置请求名称:浏览菜单
输入hostname、port、path = /api/v1/menu/list
设定 Method = GET
在HttpRequest中添加Http Header Manager,暂时保持Http Header Manager中为空,我们之后会对其进行配置
返回代码为 401 提示信息为 “Please login first.”。聪明的读者,你们能为小象解答原因吗?
我已经创建好了所有接口,暂时保持Http Header Manager中为空:
提取接口的JSON返回值,需要在对应的HttpRequest中添加JSON Extractor (JSON 提取器)
需要使用json path来匹配需要提取的变量值。由于篇幅有限,我就不讲解json path的使用方法了,请大家自行搜索。
$. 代表JSON的根节点。可以在View Result Tree中打开 JSON Path Tester来确定所匹配的JSON变量路径的正确性
在JSON Extractor中填入如下信息
-
量名称
-
JSON路径表达式
-
匹配编号
在接口请求的header中添加access_token变量。JMeter中引用变量的方法 ${变量名}
在浏览菜单接口,订单确认接口, 用户注销接口中的header中添加${access_token} 变量
运行调试结果,配置正确之后,后台接口可以回传正常响应结果数据