请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 56|回复: 1

charles和接口测试工具postman

[复制链接]

15

主题

15

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2021-10-17 18:26:16 | 显示全部楼层 |阅读模式
下载charles   官方网址:https://www.charlesproxy.com/download/
https://www.zzzmode.com/mytools/charles/ 破解网址
随便名字 点击生成 复制 双击.exe文件登录

输入生成的名字 密码

点击确定 再叉掉重新登录


Charles 是抓包工具,不是接口测试工具


问题:1.Charles异常退出,可能导致浏览器无法正常使用

2.电脑上使用VPN,charles无法抓包


Charles是用来检测bug的,不是用来接口测试的
Charles:当出现bug,用来定位bug产生的原因的
1. bug的重现步骤进行抓包
2. 查看相对应的接口的请求参数出现问题,证明前端的问题
3. 分析:如果接口请求参数出现问题,证明前端的问题
     如果接口的响应数据出现问题,后台的数据出现问题
     接下来可能需要通过对比数据库进行bug进行进一步分析
     连接上服务器Linux,查看软件的运行日志(tail-f)




postman向服务器发起请求的数据类型比较多:
none:表示不传递数据
form-data:既可以上传键值对,也可以上传文件(上传多个文件)
x-www-form-urlencodedapplication/x-www-from-urlencoded,会将表单内的数据转换为键值对
raw:可以上传任意格式的文本,可以上传textjsonxmlhtml
binaryContent-Type:application/octet-stream,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件

方法后填请求行(地址)
params里填get方法请求参数
headers是请求头
body里填post方法请求参数
运行后body里是响应正文
header是响应头

status是响应行在线json效验格式
使用谷歌浏览器 火狐浏览器会卡死)
https://www.bejson.com/
火狐浏览器可以自动格式化
https://www.wenjiangs.com/api/v2/xzqhSimple?year=2020
注意:
(1)JSON的数据结构只有两种;
(2) 可以嵌套表示,比如Array中可以嵌套Map等;
记住:Map是以{}表示,Array是以[]表示;

断言方法:
pm.test("断言响应状态码是否为200", function () {
pm.response.to.have.status(200);
});
pm.test("响应正文是否包含XX字符串", function () {
pm.expect(pm.response.text()).to.include("expires_in");
});
pm.test("断言json结果中的某个值为XX", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.expires_in).to.eql(7200);
});
pm.test("断言响应正文是否等于某个字符串", function () {
pm.response.to.have.body("expires_in");
});
pm.test("断言响应头中是否包含某个字段", function () {
pm.response.to.have.header("Connection");
});
pm.test("断言响应时间是否低于某个值", function () {
pm.expect(pm.response.responseTime).to.be.below(300); // 以毫秒为单位
});
pm.test("断言状态码是否为201或者202", function () {
pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
pm.test("断言状态信息为某个字符串", function () {
pm.response.to.have.status("OK");
});



获取响应行的内容
var code = responseCode.code
tests[code]=true
console.log(code)
var status = responseCode.name
console.log(status)
// 获取响应头的内容
var ct = postman.getResponseHeader('Content-Type')
console.log(ct)
// 获取响应时间
var time = responseTime
console.log(time)
// 获取响应正文
// 获取响应正文的全部内容
var body = responseBody
console.log(body)
// 获取响应正文的部分内容
// 方法一:使用正则表达式进行提取 RegExp:表示正则表达式
// 返回的结果是html或者xml
var bianma = responseBody.match(new RegExp('"name":"(.+?)"'))
console.log(bianma)
// 方法二:使用json对象提取正文的部分内容,要求返回的数据必须是json格式,返回的响应正文是普通字符串
// 步骤1:先把正文转换成json对象
var jd = JSON.parse(responseBody)
// 步骤2.使用json路径获取对应的值
var qu = jd[2].children[0].children[1].name
console.log(qu)

postman中实现关联操作的步骤如下:
1、利用postman获取上一个接口指定的返回值
2、使用postman全局变量保存上一个接口的值,代码如下:postman.setGlobalVariable("全局变量名",str);其中前面的参数为全局变量名称,后面为变量
3、和之前引用全局变量一样,使用{{全局变量名}}即可。









回复

使用道具 举报

1712

主题

2070

帖子

7452

积分

论坛元老

Rank: 8Rank: 8

积分
7452
发表于 2021-10-18 17:14:56 | 显示全部楼层
嘿嘿,大佬发文啦~速来打卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2021-12-6 22:27 , Processed in 0.051188 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表