项目链接:客达天下/
账户:admin/HM_2023_test
学习视频:postman和jmeter学习视频
jmeter基础知识:jmeter基础知识学习
请求路径:http://kdtx-test.itheima.***
1、Postman接口测试
登录
生成验证码:
URL: /api/captchaImage
Type: GET
Description: 生成验证码
Response-example:
响应状态码:200
响应数据:
{ "msg": "操作成功", "img": "......", "code": 200, "uuid": "xxxxxx"}
实际操作步骤:
1、设置请求方式和接口地址
2、发送请求
3、查看响应结果:
登录:
URL: /api/login
Type: POST
Description: 登录方法
Request-header:
参数名称 参数值 是否必填 示例 备注 Content-Type application/json 是 Body-parameters:
参数名称 类型 描述 是否必填 备注 username string 用户名 True 如:manager password string 用户密码 True 如:123456 code string 验证码 True 如:2 uuid string 唯一标识 True 生成验证码接口 Response:
参数名称 类型 描述 是否必填 备注 msg string 消息 True code int64 业务代码 True token string 令牌token False Request-example:
{ "username": "manager", "password": "123456", "code": "2", "uuid": "a5762bc30ec74055a58dba2c63b01087" }Response-example:
响应状态码:200
响应数据:
①:登录成功:{ "msg": "操作成功", "code": 200, "token": "xxxxxx"}
② 用户名或密码错误:{ "msg": "用户名或密码错误", "code": 500}
③ 验证码错误或过期:{"msg": "验证码已失效", "code": 500}/1
操作步骤:
1、设置请求方式和接口地址
2、设置请求头:
3.设置请求体:
4、发送请求
5、查看响应结果
验证码与登录接口关联
验证码接口:/api/captchaImage
登录接口:/api/login
登录接口请求体uuid字段->验证码接口返回uuid字段
操作步骤:
1、创建Environments并添加变量 (此处设置为uuid)
2、创建Collection并添加环境变量
3、验证码接口中配置
var jsonData=pm.response.json()
pm.environment.set("uuid", jsonData.uuid)
5、登录接口中使用变量uuid
6、需要先运验证码接口,在运行登录接口,查看响应结果
新增课程接口
需要添加代码
var jsonData = pm.response.json()
pm.environment.set("fileName", jsonData.fileName)
#fileName可以替换成任何环境(全局)变量
URL: /api/clues/course
Type: POST
Description: 新增课程管理
Request-header:
参数名称 参数值 是否必填 示例 备注 Authorization token 是 Bearer eyJhbGjgfjG2INQjIHFirwSw 登录接口 Content-Type application/json 是 Body-parameters:
Parameter Type Description Required Since name string 课程名称 True - subject string 课程学科 True - price int32 课程价格 True - applicablePerson string 适用人群 True - info string 课程介绍 false - Request-example:
{ "name": "测试开发提升课01", "subject": "6", "price": 899, "applicablePerson": "2", "info": "测试开发提升课01" }Response-example:
响应状态码:200
响应数据:
① 添加成功:
{ "msg": "操作成功", "code": 200}② 未登录:
{ "msg": "请求访问:/clues/course,认证失败,无法访问系统资源", "code": 401}③ 添加失败:
{ "msg": "操作失败", "code": 500}
操作步骤:
1、在Environments中设置token
2、在登录接口中设置
3、创建请求:
4、发送请求
5、查看响应结果
合同上传接口
URL: /api/***mon/upload
Type: POST
Description: 合同上传
Request-header:
参数名称 参数值 是否必填 示例 备注 Authorization token 是 Bearer eyJhbGjgfjG2INQjIHFirwSw 登录接口 Content-Type multipart/form-data 是 Body-parameters:
参数名称 数据类型 参数值 是否必填 Since file string 文件路径 true Response-example:
响应状态码:200
响应数据:
{ "msg": "操作成功", "fileName": "/profile/upload/2023/01/05/0c8642af-4d79-47ca-8151-67e4f8921ca5.pdf", "code": 200, "url": "http://localhost:8080/profile/upload/2023/01/05/0c8642af-4d79-47ca-8151-67e4f8921ca5.pdf" }
操作步骤:
1、创对应请求
2、发送请求,查看响应结果
添加合同(新增)
新增合同
URL: /api/contract
Type: POST
Description: 新增合同
Request-header:
参数名称 参数值 是否必填 示例 备注 Authorization token 是 Bearer eyJhbGjgfjG2INQjIHFirwSw 登录接口 Content-Type application/json 是 Body-parameters:
Parameter Type Description Required Since contractNo string 合同编号 True - phone string 手机号 True - name string 客户姓名 True - subject string 意向学科 True - channel string 渠道来源 false 0:线上活动<br>1:推广介绍 activityId int64 活动信息 false - courseId int64 课程id True - fileName string 文件名称 True - Request-example:
{ "name": "测试888", "phone": "13612341888", "contractNo": "HT10012004", "subject": "6", "courseId": 99, "channel": "0", "activityId": 77, "fileName": "/profile/upload/2023/01/05/86e5a3b8-b08c-470c-a17d-71375c3a8b9f.pdf" }Response-example:
响应状态码:200
响应数据:
{ "msg": "操作成功", "code": 200}
操作步骤:
1、Environments中设置fileName
2、给合同上传中设置Tests
3、创建添加合同接口并设置对应属性
4、发送请求并查看响应结果(这里我怎么弄都是500,应该是服务端有问题)
查询合同列表
URL: /api/contract/list
Type: GET
Description: 查询合同列表
Request-header:
参数名称 参数值 是否必填 示例 备注 Authorization token 是 Bearer eyJhbGjgfjG2INQjIHFirwSw 登录接口 Query-parameters:
Parameter Type Description Required Since phone string 手机号 false - Response-fields:
Field Type Description Since total int64 总记录数 - rows array 列表数据 - code int32 消息状态码 - msg string 消息内容 - params map No ***ments found. - └─any object object any object. - Response-example:
响应状态码:200
响应数据:
{ "total": 1, "rows": [ { "createBy": "admin", "createTime": "2023-01-05 08:58:51", "id": "7417444345987875", "contractNo": "HT10012004", "phone": "13612341888", "name": "测试888", "subject": "6", "channel": "0", "activityId": 77, "activityName": "代金券测试888", "courseId": 99, "courseName": "接口测试001", "status": "1", "fileName": "/profile/upload/2023/01/05/86e5ad-71375c3a8b9f.pdf", "coursePrice": 998.0, "discountType": "代金券", "order": 898.0, "deptId": 103 } ], "code": 200, "msg": "查询成功" }
操作步骤:
1、创建对应请求:
2、发送请求并查看结果
删除合同:
URL: /api/contract/remove
Type: POST
Description: 删除课程管理
Request-header:
参数名称 参数值 是否必填 示例 备注 Authorization token 是 Bearer xxxxxx 登录接口 Content-Type application/x-www-form-urlencoded Body-parameters:
Parameter Description Required Since id 合同id true Request-example:
{ "id": 10950251898105098 }响应状态码:200
响应数据:
① 删除成功:
删除成功!② 未登录:
{ "msg": "请求访问:/contract/remove,认证失败,无法访问系统资源","code": 401}③ 删除失败:
删除失败!④ 删除失败:
缺少必填参数:id
操作步骤:
1、配置接口文档:
2、发送请求,查看结果(这个地方有很多种请求):
再删除一次就会显示:
单接口测试请看这个帖子:单接口测试:课程管理(增删改查)
2、jmeter接口测试
获取验证码
1、测试计划中添加线程组:
2、添加http请求,并配置路径
3、添加监听器-查看结果树
4、运行并查看结果
登录
1、根据接口文档,设置好请求信息
2、添加http信息头管理器
3、先禁用一下获取验证码,不让它uuid,再运行查看结果
4、上面步骤是手工复制uuid,下面用后置处理器来提取uuid,解决接口关联的问题:
此处需要学习一个路径表示方式:JSON Path
JSON Path:用于定位和提取JSON 数据的查询语言
语法:
$:根据结点对象表示整个JSON数据的起始点(表示的是外头的大括号)
. :获取子节点
[]:索引,根据索引访问数组中的元素
*:通配符,获取全部子节点
[?(<expression>)]:过滤器表达式。,。表达式结果必须是布尔值
@:过滤器处理的当前节点对象
与postman不同的是,uuid引用的方式不同了,在登录请求体中:
最终查看响应结果:
由于这些地址都是客达天下的网址,每一个都去改太麻烦了,这里可以去添加一个配置元件:http请求默认值:
新增课程
操作步骤:
1、根据接口文档,设置好请求信息
2、添加http请求头:
在登录接口添加后置处理器
3、设置新增课程的请求体信息:
4、查看响应结果(此处应该有一个课程ID的。但是我这个没有,postman里也没有,提取ID的方法和提取uuid、token一样的,在新增课程节点后添加后置处理器):
如下图:
5、点击查看结果树中,对于复杂的JSON数据,切换到JSON path tester,输入$.data.id,确认这个能提取出ID,然后将它复制过去:
6、发送请求查看响应结果:
查询课程列表:
1、根据接口文档,设置好请求信息
2、添加http请求头:
3、发送请求查看响应结果,如正确的截图
添加响应状态码断言和JSON断言:
1、添加状态码断言
2、进行运行,查看结果树
失败:
成功:
1、添加JSON数据断言:
2、进行运行,查看结果树
1、添加JSON断言:断言code值为200