文章目录
1.准备一个springboot项目(以下所有演示都是基于这个项目)
https://blog.csdn.net/qq_37449606/article/details/139380310?spm=1001.2014.3001.5502
2.postman是什么?
http接口测试工具
3.下载安装包
4.接口测试的必要条件
请求地址
请求参数
请求方式
请求头
请求协议
5.实战POST、GET请求
5.1POST请求:@RequestBody接收参数
1.请求头
2.入参
3.代码部分(新增接口)
在springboot项目上进行增量:https://blog.csdn.net/qq_37449606/article/details/139380310
service层有变动:包含service层的接口类、service层的实现类
1.Controller层添加接口
package com.example.testdemo.demo.controller;
import com.example.testdemo.demo.entity.Result;
import com.example.testdemo.demo.entity.SysUser;
import com.example.testdemo.demo.service.SysUserServiceImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Autowired
private SysUserServiceImp sysUserService;
@PostMapping("/add")
public Result add(@RequestBody SysUser sysUser) { //@RequestBody通过json的格式接收参数
sysUserService.save(sysUser);
return Result.success(sysUser);
}
}
2.service层接口类
package com.example.testdemo.demo.service.imp;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.testdemo.demo.entity.SysUser;
public interface SysUserService extends IService<SysUser> {
//继承了mybatisplus中的IService,可使用mybatisplus进行新增
}
3.service层的实现类
package com.example.testdemo.demo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.testdemo.demo.entity.SysUser;
import com.example.testdemo.demo.mapper.SysUserMapper;
import com.example.testdemo.demo.service.imp.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class SysUserServiceImp extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@Autowired
private SysUserMapper sysUserMapper;
}
4.返回格式
package com.example.testdemo.demo.entity;
import lombok.Data;
@Data
public class Result {
private static final String SUCCESS = "200";
private static final String ERROR = "1";
private String code;
private String msg;
private Object data;
public static Result success(){
Result r = new Result();
r.setCode(SUCCESS);
return r;
}
public static Result success(Object data){
Result r = new Result();
r.setCode(SUCCESS);
r.setData(data);
return r;
}
public static Result error(String s){
Result r = new Result();
r.setCode(ERROR);
r.setMsg(s);
return r;
}
}
5.2POST请求:表单的形式接收参数
1.请求头
2.入参
3.代码部分
在5.1的基础上只需去掉@RequestBody
@PostMapping("/add")
public Result add( SysUser sysUser) {
sysUserService.save(sysUser);
return Result.success(sysUser);
}
5.3GET请求
6.实战集合测试执行
1.创建一个集合文件夹
2.将相关接口放到此集合中
3.点击向右的图片(各postman版本大同小异)
4.点击run按钮
5.如图
6.执行结果
7.实战设置变量
1.目的为了在多个接口间形成关联(比如注册某个用户,同时用这个用户登录)
2.{{}}来获取变量名
3.注意设置变量或者修改后需要保存,否则不生效
4.主要以所有类型的变量名称不要重复
5.环境变量的设置变量名可以重复(因为我们每次只是使用其中一套环境,也不算是重复)
7.1设置集合变量
目的:用于集合中使用,步骤如下
INITIAL VALUE :默认值,可以导出、可以分享
CURRENT VALUE :当前值,不上传到服务器,无法导出(导出后再导入,你会发现value都是空的)
Persist All:当前值覆盖到默认值上
Reset All:默认值覆盖到当前值上
执行集合,可查看《 6.实战集合测试执行》
7.2设置全局变量
目的:用于全局中使用,任意集合中,操作步骤如下
7.3设置环境变量
平时项目开发过程会涉及到测试环境、开发环境、预生产环境、生产环境等,所以设置不同的环境下不同的值
7.4Tests设置变量(断言)
设置一个固定的token字符串模拟一下。token是前端进行请求的令牌,是一个字符串。
原理:登录→后端生成一个token返回前端→登录成功后,再去访问其他接口,后端只需要校验这个token即可,不用再去校验用户名和密码
(1)后端会从接收到的前端请求的header中去获取token
(2)如果token校验不通过,则禁止访问某接口(可以理解为在访问接口前的一道校验、拦截)
1.基于演示的springboot项目的增量部分,整体项目目录结构请参考文章开头的贴图
1.新增一个SysUserVo类
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class SysUserVo {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private String password;
private Integer age;
private String phone;
private String sex;
private String role;
private String token;
private List<Map<String,String>> list;
}
2.controller层中模拟一个登录接口
@PostMapping("/login")
public Result userLogin(SysUserVo sysUserVo){
//模拟一个token
String token = "asdg123435kjkllrryt233356";
sysUserVo.setToken(token);
//模拟一个list
List<Map<String,String>> list = new ArrayList<>();
Map<String,String> map = new HashMap<>();
map.put("name", "该用户下的娃");
map.put("age", "12");
list.add(map);
sysUserVo.setList(list);
return Result.success(sysUserVo);
}
2.postman调用登录接口,证明接口可以调通
3.开始设置断言(登录接口中设置断言,获取的token再作用到其他接口上)
//获取相应数据json对象
//定义一个变量jsonData,用来接收接口返回结果
var jsonData = pm.response.json();
//从相应的数据中提取出token,因为我的项目是包裹在data中
var token = jsonData.data.token;
//设置token
pm.environment.set("token", token);
运行调用登录接口后,查看结果
token的使用。假设:找一个之前的查询接口模拟《5.3GET请求》
8.实战Tests断言
9.实战参数化
1.注意事项
(1)参数化方式:支持csv、text、json文档
(2)前提必须在集合中
(3)参数中要有标题部分、数据部分(英文逗号)
(4)集合中的内容如果有修改必须保存(ctrl+s),否则不生效
(5)如何创建和运行集合请参考本文《6.实战集合测试执行》
2.以同时注册多个用户为例
(1)数据准备
(2)修改postman中注册接口调用(参考本文中《5.1POST请求:@RequestBody接收参数》)
(3)运行集合
(4)执行结果
10.实战随机数
(1){{KaTeX parse error: Expected 'EOF', got '}' at position 5: guid}̲} 格式:aa112-33a…timestamp}} 时间戳
(3){{$randomInt}} 添加0-1000之间的随机整数
11.Monitor监视器
12.导入导出测试脚本或代码片段
13.报错
1.Required request body is missing
勾选上Content-Length、Host
2…HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported]
原因:post请求,使用表单的方式传参,但Controller层接收参数时使用了@RequestBody(此注解接收json格式的)
版权归原作者 妄忧杂记 所有, 如有侵权,请联系我们删除。