Postman 使用当前使用postman版本10.24.7Postman可以创建多个工作空间 workspace每个workspace都是个独立的空间workspace内功能由 Environments、Collections组成使用。Environments默认有全局变量 Globals这个下面变量Variable是在整个工作空间 workspace下生效的除此之外还可以根据自己有多少环境相应的环境变量Globals和自定义的环境下Variable可以相同自定义环境切换到哪个就使用哪个环境里面的值但环境里的变量是会覆盖Globals内的同名变量的所以Globals内放置的都是全局公用的变量多个环境内变化的变量才会放到自定义环境内创建workspace删除workspace创建Collection与request环境变量 Environments使用环境变量传递数据这里以token使用为例正常每个请求都需要附带token才能进行请求当掉用登录接口后拿到token填入header中的Authorization进行下一步掉用如果有特别多接口就非常不方便了这里就可以将登录后拿到的accessToken和refreshToken放到环境变量中其他地方直接使用变量填入响应的值这里是使用Tests功能它允许在发送请求后自动执行一些测试并对服务器返回的响应进行验证这里不止环境变量Globals变量、集合变量也是可以用于Tests脚本设置的pm.globals.set(variableName, value); // 设置全局变量 pm.collectionVariables.set(variableName, value) // 设置集合变量 pm.variables.set(variableName, value); // 设置局部变量 // 局部变量或临时变量非常适合存储仅在当前请求或脚本执行期间需要的数据。不会被永久保存在 Postman中也不会对其他请求或环境产生影响至于获取token这里不止使用Tests来设置使用Pre-request Script也是可以的不过这里需要使用js编写完整的登录请求获取结果再设置环境变量postman里不能在Pre-request Script直接调用现有的登录接口如果使用Pre-request Script可以在集合上面来设置预运行脚本这样集合下面的每个请求都会在发送请求前运行集合上的Pre-request Script脚步const d new Date(); const t d.getTime(); const lastRefreshTokenTime parseInt(pm.environment.get(lastRefreshTokenTime)); // 时间超过一个小时就重新登录刷新token if (t-lastRefreshTokenTime 3600000) { return } const url pm.globals.replaceIn({{transportProtocol}}://{{host}}:{{port}}/user/login) const req { url: url, method: POST, header: { Content-Type: application/json }, body: { mode: raw, raw: JSON.stringify({ username: pm.globals.get(account), password: pm.globals.get(password) }) } }; pm.sendRequest(req, function (err, response) { // 这里状态码判断逻辑根据实际修改 if (response.code 201) { const data response.json() pm.environment.set(TOKEN, data.data.accessToken) pm.environment.set(REFRESH_TOKEN, data.data.accessToken) return } console.log(Error: ${JSON.stringify(response.json())}) });Pre-request Script与Tests使用场景Pre-request Script会在请求发送前先执行所以可以在这里调用其他接口将数据添加到请求参数、headers里面还可以在请求前根据请求生成验签数据等操作Tests是在请求完成后才执行的这时可以通过pm.response拿到请求结果数据了所以就可以将部分数据存储到变量中用于其他接口使用也可以对请求结果做断言测试// 请求前设置header参数 pm.request.headers.add({key:X-SIGNATURE,value:XSIGNATURE}); // 获取请求前headers、请求方式、params、body、url。这些数据都在 pm.request 里面可以获取到 // 注意有些值是以数组的类型存储的不过postman应该对这些数组做了修改像.length、.forEach等函数是不能使用的 const headers pm.request.header const httpMethod pm.request.method // 注意body的数据格式 { mode: raw, raw: { pageIndex: 0, pageSize: 10, }, options: { raw: { language: json } }, }; const body pm.request.body // pm.request.url 包含内了protocol、path、host、query等数据按需取用即可 const query pm.request.url.query const protocol pm.request.url.protocol const path pm.request.url.path const host pm.request.url.host // 获取响应状态码 const responseCode pm.response.code; // 获取响应头 const responseHeaders pm.response.headers; // 获取响应体 const responseBody pm.response.text(); // 将响应体解析为 JSON 对象response返回的数据是Buffer类型的正常使用需要转换 const jsonResponse pm.response.json(); // 获取响应中的 Cookie const responseCookies pm.response.cookies;可使用的外部库learning.postman.com/docs/writin…postman可用的外部库官网有13个ajv、atob、btoa、chai、cheerio、crypto-js 、csv-parse/lib/sync、lodash、moment、postman-collection、tv4、uuid、xml2js部分NodeJS 模块也是可以使用的具体有哪些可以看一下文档参数传递事例事例为角色列表接口获取数据随机从取到的数据中取一个对象将其中两个字段放到集合变量中供角色详情接口查询使用// Tests 脚本 const response pm.response.json() var roleList []; // console.log(response); if(response.success response.data.data.length0){ roleList response.data.data let max response.data.data.length let randomNum Math.floor(Math.random() * max) let role roleList[randomNum]; // console.log(role,role) pm.collectionVariables.set(applicationCode,role.applicationCode) pm.collectionVariables.set(roleCode,role.roleCode) }最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。