workspaces工作空间
collections集合--添加request请求
1.设置请求的方法以及请求URL
2.(1)params--get请求的传参
(2)Body
post请求传参
none无参数
form-data可以支持键值对的传参,也可以支持文件传参
x-www-form-urlencoded只支持键值对传参
raw可以支持的参数类型格式为json、text、xml、html、javascript
binary把文件以二进制方式传参
(3)Headers设置请求头
(4)Pre-request-script请求之前的脚本设置
(5)Tests请求之后的断言
apis接口文档
environments环境
mock server虚拟服务器
history历史记录
环境变量及全局变量
使用场景:当接口中某些数据在多个接口中使用,这时候可以使用变量来进行管理,从而实现一次设置多次使用
环境变量:针对某个环境的参数设置变量,在发送请求过程中需要这些参数的值,只需要设置调用即可。
环境变量的作用范围:作用于当前环境
环境变量的调用:{{变量名}}
全局变量作用的范围:作用于所有的请求,包括了不同环境下的所有请求
全局变量的调用:{{变量名}}
关联接口测试
关联接口:上一个接口的返回值作为下一个接口的入参
关联接口实现方式:
1.json提取器
2.正则表达式提取
3.通过在Tests编辑常用函数/脚本(js脚本)
console.log(responseBody);//通过json提取器实现提取返回值中的部分值
var result = JSON.parse(responseBody);
var access_token=result.access_token;
console.log(access_token);
//把提取的access_token的值存储成一个变量,给关联接口进行调用
pm.globals.set("access_token",access_token);
//通过正则式提取
var result=responseBody.match(new RegExp('"access_token":"(.*?)","expires_in"'));
console.log(result);
var access_token_zz=result[1];
console.log(access_token_zz);
//实则把token设置成一个环境变量
pm.globals.set("access_token_zz",access_token_zz)
动态参数
常用的动态参数(系统参数)
{{$timestamp}}生成当前时间的时间戳
{{$randomint}}生成0-100之间的随机数
{{$guid}}生成一串GUID唯一的字符串
自定义参数
通过javascript设置。
//设置自定义变量
var times=Data.now();
pm.globals.set("times",times);
自定义变量的调用{{变量名称}}
断言
通过javascript脚本实现断言。在Tests写
常用函数
status code is 200 响应的状态是否为200
Response body:contains string 检查响应的结果中是否包含字符串
Response body:JSON value check 判断检查响应的返回的json数据某个键的值
Response body:is equal to a string 检查响应的结果是否等于一个字符串
Response headers: Content-type header check 判断响应头中是否包含Content-type响应头
Response time is less than 200 ms 响应时间低于200毫秒
断言获取自定义变量方式
1.pm.globals.get("变量名称")
2.globals.times
3.globals["times"]
参数化设置
作用:对同一个用例设置多组数据来进行测试
测试数据文件类型:csv,json
接口参数化设置:
1.设置好接口的测试数据,注意测试数据必须列的先后顺序赋值,值与值之间使用逗号隔开
2.修改被循环执行的接口,有哪些数据需要调用数据文件中的数据,就需要进行对应的修改并保存
3.通过Runner选择循环执行的接口,选择对应的数据文件去运行
4.查看执行结果并分析
注意:
javascript脚本如何获取数据文件中的某个列数据---data.数据文件某个列的列名
接口设置中如何获取数据文件中的某个列的数据---{{数据文件某个列的列名}}
额外补充
Cookie(客户端存储机制)
-
是什么:服务器下发的一小段文本(≤4KB),保存在用户浏览器中。
-
怎么工作 :浏览器会自动在后续同域请求的
Cookie头中带上它。 -
能干嘛:
-
存
Session ID(最常见) -
记住语言偏好、主题等用户设置
-
跟踪广告/行为(第三方 Cookie)
-
-
特点 :只是载体,本身没有"鉴权逻辑",可被 JS 读取(除非设
HttpOnly)。
Session(服务端状态管理)
-
是什么:服务器为每个用户开辟的一块内存/数据库/Redis 空间,存放用户登录状态、权限等数据。
-
怎么工作:
-
用户登录成功 → 服务器生成 Session 数据 + 唯一
Session ID -
通过
Set-Cookie把 Session ID 发给浏览器 -
后续请求浏览器自动带 Session ID → 服务器查对应 Session 数据
-
-
能干嘛:传统 Web 项目维持登录状态、购物车、权限校验。
-
特点:有状态。服务器必须存数据,集群部署时需共享存储(如 Redis)。
Token(自包含凭证,常指 JWT)
-
是什么 :一段经过签名的字符串(如
eyJhbGciOiJIUzI1NiIs...),通常包含用户ID、过期时间、权限等。 -
怎么工作:
-
登录成功 → 服务器用密钥签名生成 Token
-
返回给前端 → 前端存
localStorage/sessionStorage/Cookie -
后续请求手动放在
Authorization: Bearer <token>头中 -
服务器只需验证签名有效性,不查库、不存状态
-
-
能干嘛:前后端分离、移动端、微服务、跨域鉴权。
-
特点:无状态。天然支持分布式,但泄露后无法主动作废(需配合短期+刷新机制)。
4.cookie鉴权原理:当客户端第一次访问服务器,是在服务器生成cookie信息,把cookie信息放到响应头set-cookie,把cookie信息发送到客户端,保存在客户端;客户端第二次访问服务器的时候,客户端会在请求头上带上cookie信息,实现cookie鉴权。
5.cookie分类
(1)会话cookie:保存在内存,当浏览器关闭之后会自动化清除
(2)持久cookie:保存在硬盘,浏览器关闭不会被消除,只要当失效时间到了才会被清除
6.mock测试使用场景:后端的接口还没开发完成,前端的业务需要调用后端的接口,可以通过mock server创建模拟的接口
7.加密
//对用户名原字符进行MD5加密
var username=CryptoJS.MD5("admin").toString();
//对密码原字符进行MD5加密
var username=CryptoJS.MD5("123").toString();
console.log(username);
console.log(passwd);
pm.globals.set("username",username);
pm.globals.set("passwd",passwd);
//通过js脚本对原字符进行base64位进行加密
//对原字符指定utf8进行编码
var username=CryptoJS.enc.parse("admin");
//对原字符进行base64位加密
var username_64=CryptoJS.enc.Base64.stringify (username);
//把通过base64加密的密文设置成全局变量
pm.globals.set("username_64_2",username_64);
8.生成自动化测试报告
dos命令:jmeter -n -t jmeter脚本 -l jmeter测试报告(.jtl文件)
比如:jmeter -n -t jmeter_220908.jmx -l results.jtl