这篇我用java写个Rest接口,使用Jmeter来多线程调用
目录
4.2:BeanShell 取样器将token值设为全局变量
1:java接口
package com.example.demo.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.pojo.Students;
@RestController
@RequestMapping("/user")
public class UserController {
/**
* @param number 生成List的长度
* @return
* @throws InterruptedException
*/
@RequestMapping(value = "/{number}",method = RequestMethod.GET)
public List<Students> getStudents(@PathVariable int number) throws InterruptedException{
System.out.println(number+"开始");
Thread.sleep(5000);
List<Students> list = new ArrayList<Students>();
for(int i=0;i<number;i++) {
Students s= new Students("name"+(i+1),18+i, i%2==0?'男':'女');
list.add(s);
}
System.out.println(number+"生成并返回"+number+"个students。");
return list;
}
}
用到的实体类
package com.example.demo.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.ToString;
@Data
@AllArgsConstructor
@ToString
public class Students {
private String name;
private int age;
private char sex;
}
2:Jmeter测试案例
2.1:线程组
2.2:HTTP Request
这里也可以直接在路径填:http://localhost/8080/user/${__Random(10,100,number)}
注意:路径后面的参数是生成的随机的10-100的整数;取函数可以参考下图
3:监听器-查看结果树
3:启动测试
查看结果树
后端打印的:
可以看到结果是对的,但是注意,Jmeter中性别是中文,显示乱码,有两种这是方式可以解决
参考:https://www.cnblogs.com/xiaxiaoxu/p/9607017.html
这是Get请求,Post只是参数以Json格式写在 Body Data消息体中,也可以写在Parameters中
4:全局Token
但是前面的都是直接调用接口,那现在的接口一般都是需要登陆才能操作,所以需要在登录之后把返回的token作为全局token,再去调用其他业务接口
首先按照前面的例子请求登录接口,再:
4.1:添加正则表达式提取器
- (1)引用名称 token
- (2)正则表达式 "token":"(.+?)"
- (3)模板 用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值
- (4)匹配数字 0代表随机取值,1代表全部取值,通常情况下填0
- (5)缺省值 如果参数没有取得到值,那默认给一个值让它取
4.2:BeanShell 取样器将token值设为全局变量
${__setProperty(newtoken,${token},)}
4.3:.添加请求头部管理器作为全局使用
${__property(newtoken)}
完成以上就可以使用jmeter完成登录后的其他操作了
打波我的广告:最近刚搬完家,用的是货拉拉无忧搬家,体验不错,全程搬运不用自己动手。搬家最高减80元,长按图片扫码就能领,价格实惠!搬完家还能领50元现金!狂省130元。扫码关注