2026/3/4 15:05:19
网站建设
项目流程
网站商城建设实训心得,在线建网址,莆田市商城网站建设,网页设计的目的是指设计者本文大纲截图#xff1a; 一、Postman简介和安装【看到最后有...】
简介#xff1a; Postman 是一款非常流行的接口调试工具#xff0c;它使用简单#xff0c;而且功能也很强大。不仅测试人员会使用#xff0c;开发人员也经常使用。 特征#xff1a; 1#xff09;简单易…本文大纲截图一、Postman简介和安装【看到最后有...】简介 Postman 是一款非常流行的接口调试工具它使用简单而且功能也很强大。不仅测试人员会使用开发人员也经常使用。特征1简单易用的图形用户界面2可以保存接口请求的历史记录3使用测试集 Collections 可以更有效的管理组织接口4可以在团队之间同步接口数据安装桌面应用下载https://www.postman.com/downloads/傻瓜式安装过程略二、Postman高级用法1、管理测试用例创建 collections(用例集)创建子目录创建请求用例集导出(Export)导入(Import)2、全局变量和环境变量全局变量定义在 Postman 全部生效的变量全局唯一。不可重复定义的变量。命名可以为glb_名称。设置代码设置格式pm.globals.set(全局变量名, 全局变量值)示例pm.globals.set(glb_age, 100)获取代码获取格式var 接收值的变量 pm.globals.get(全局变量名)示例var ret pm.globals.get(glb_age)即ret的值为100请求参数获取(postman界面获取){{全局变量名}}示例{{glb_age}}环境变量定义在特定环境生产环境、开发环境、测试环境下生效的变量在本环境内唯一。命名可以为env_名称。注意1一个变量只能属于某个环境在某一个环境中变量不可重复定义2在环境与环境之间可以重复的变量3一个环境可以包含多个环境变量4常见环境分类开发环境、测试环境、生产环境设置代码设置格式pm.environment.set(环境变量名, 环境变量值)示例pm.environment.set(env_age, 99)获取代码获取格式var 接收值的变量 pm.environment.get(环境变量名)示例var ret pm.environment.get(env_age)即 ret的值为99请求参数获取(postman界面获取){{环境变量名}}示例{{env_age}}3、请求前置脚本介绍 在send按钮点击后请求前置脚本代码第一时间被执行。即在 postman 内部实际http请求之前。假设场景 调某接口时要输入“时间戳”如果输入的“时间戳”的绝对值超过标准时间10分钟则不允许调用。时间戳 对应绝对时间从1970年1月1日 00:00:00 到现在 所经历的秒数。一天为86400秒则距现在为51年6月9天即1624665600秒。案例 调用百度首页接口传时间戳给服务器实现步骤1在 Pre-request Script 标签页中添加代码。拿到时间戳写入全局变量拿到时间戳var timestamp new Date().getTime()将时间戳设置到 全局变量pm.globals.set(glb_timestamp, timestamp)2点击 Send 按钮发送请求请求发送前执行上述代码写入全局变量3查看写入的变量4在请求参数界面中使用全局变量{{全局变量名}}5在 postman 的控制台查看发送的 http 请求postman 前置脚本工作原理postman 界面组织http请求方法、url、头、体在Test中添加断言代码在Pre-request Script中添加请求前置脚本在Test Results(或Tests) 中查看断言结果Send 发送给 postman 内部postman 内部解析请求前置脚本代码set glb_timestamp全局变量{{glb_timestamp}}分析 http请求方法、url、头、体 ......执行断言代码得到断言结果服务器解析 http请求回发http响应4、关联介绍 应用于多个http请求之间有数据关联、或依赖关系时。实现步骤 A接口依赖B接口的数据1向B接口发送http请求获取数据2将数据设置至全局变量环境变量中3A接口获取全局变量环境变量中数据值进行使用案例 请求获取天气接口提取响应结果中的城市将城市名给百度搜索接口使用。实现步骤1创建用例集分别创建查询天气请求和百度搜索的请求2在查询天气请求Tests中编写代码获取城市名写入全局变量获取全部响应结果var jsonData pm.response.json()从响应结果中获取城市名var city jsonData.weatherinfo.city将城市名写入到全局变量pm.globals.set(glb_city, city)3点击 Send按钮发送请求查看设置的全局变量。4修改 百度搜索请求使用全局变量按城市名进行搜索http://www.baidu.com/s?wd{{glb_city}}5、断言简介 postman 断言借助JavaScript-js语言编写代码写在Tests标签页里自动判断预期结果与实际结果是否一致。postman 断言工作原理postman 界面组织http请求方法、url、头、体在 Test 中添加断言代码在 Test Results(或Tests) 中查看断言结果Send 发送给 postman 内部postman 内部分析 http请求方法、url、头、体 ......执行断言代码得到断言结果服务器解析 http请求回发http响应postman常用断言Status code:Code is 200断言响应状态码Response body:Contains string断言响应体是否包含某个字符串Response body:Is equal to a string断言响应体是否等于某个字符串对象Response body:JSON value check断言 JSON 数据Response headers:Content-Type header check断言响应头1、断言响应状态码名称Status code: Code is 200步骤1在 Tests 标签中选中 Status code: Code is 200生成对应码2适当调整 test() 方法参数1和 匿名函数中的预期结果3点击 send 按钮发送请求执行断言代码4查看断言结果示例断言响应状态码是否为200代码格式一pm.test(Status code is 200, function () { pm.response.to.have.status(200); });pm代表 postman 的一个实例test()是pm实例的一个方法。有两个参数参数1在断言成功后给出的文字提示。可以修改。如Status code is 200参数2匿名函数function ()。pm.response.to.have.status(200)postman的响应结果中应该包含状态码 200。200 —— 预期结果代码格式二tests[Status code is 200] responseCode.code 200;2、断言响应体是否包含某个字符串名称Response body: Contains string示例断言响应体包含指定字符串代码格式一pm.test(Body matches string, function () { pm.expect(pm.response.text()).to.include(string_you_want_to_search); });pmpostman的一个实例test(): postman实例的方法有两个参数参1断言后显示的文字提示信息可改。参2匿名函数pm.expect(pm.response.text()).to.include(string_you_want_to_search);// 意思pm 期望 响应文本 中包含 xxxx 字符串。string_you_want_to_search—— 预期结果。可以修改代码格式二tests[Body matches string] responseBody.has(string_you_want_to_search);示例tests[断言响应体包含“操作成功”] responseBody.has(操作成功);3、断言响应体是否等于某个字符串对象名称Response body: Is equal to a string示例断言响应体等于某个字符串对象代码格式一pm.test(Body is correct, function () { pm.response.to.have.body(response_body_string); });pm.response.to.have.body(response_body_string);// 意思是pm的响应中应该有 响应体xxxresponse_body_string—— 预期结果。可以修改。代码格式二tests[Body is correct] responseBody response_body_string;4、断言 JSON 数据名称Response body:JSON value check示例断言json的响应结果代码格式一pm.test(Your test name, function () { var jsonData pm.response.json(); pm.expect(jsonData.value).to.eql(100); });参数说明var jsonData pm.response.json();中var jsonData是用js语法定义一个变量名为jsonData的变量。pm.response.json()代表响应的json结果。示例1pm.test(断言响应结果success的值为true, function () { var jsonData pm.response.json(); pm.expect(jsonData.success).to.eql(true); });示例2pm.test(断言响应结果code的值为10000, function () {:var jsonData pm.response.json(); pm.expect(jsonData.code).to.eql(10000); });示例3pm.test(断言响应结果message的值为 操作成功, function () { var jsonData pm.response.json(); pm.expect(jsonData.message).to.eql(操作成功); });代码格式二var jsonData JSON.parse(responseBody); tests[Your test name] jsonData.value 100;示例var jsonData JSON.parse(responseBody); tests[断言相应结果success的值为true] jsonData.value true;5、断言响应头名称Response headers: Content-Type header check示例断言响应头代码格式一pm.test(Content-Type is present, function () { pm.response.to.have.header(Content-Type); }); pm.response.to.have.header(Content-Type); // pm的响应头中包含Content-Type示例可以在header中添加响应头中的key对应的value判定用,隔分。pm.test(Content-Type is present, function () { pm.response.to.have.header(Content-Type, application/json;charsetUTF-8);});代码格式二tests[Content-Type is present] postman.getResponseHeader(Content-Type);示例tests[Content-Type is present] postman.getResponseHeader(Content-Type,application/json;charsetUTF-8);6、数据驱动当http请求使用的 数据有较高相似度相同的请求时考虑使用参数化将数据组织到数据文件中。数据文件简介 CSV、JSONCSV优点数据组织形式简单适用于大量数据的场合缺点1不支持bool类型数据数据被postman读入后自动添加“”包裹bool值2不支持多参、少参、无参、错误参数的接口测试3不支持复杂数据类型如嵌套字典、列表等JSON优点1支持bool类型2支持多参、少参、无参、错误参数3支持复杂数据类型缺点对于相同数据量json数据文件大小远大于CSV文件导入外部数据文件 CSV文件、JSON文件CSV文件1、创建 xx.csv 文件2、将数据写入到 csv 文件中第一行写入的是数据对应的“字段名”从第二行向后依次是对应的数值数据间用英文逗号隔开。3、在 Postman 中选中使用数据文件的用例集导入数据文件1点击用例集名称使用Run按钮进入“Runner”页面2使用“Select File”按钮选择 xx.csv文件3点击预览Preview按钮校验数据文件是否正确JSON文件1、创建 xx.json 数据文件2、在数据文件中按json语法写入json数据。postman要求json格式的数据文件数据内容的最外层必须是[ ]。内容所有的数据用{}存储。建议使用json.cn在线网站编写3、在 Postman 中选中使用数据文件的用例集导入数据文件1点击用例集名称使用Run按钮进入“Runner”页面2使用“Select File”按钮选择xx.json文件3点击 预览Preview按钮校验数据文件是否正确读取数据文件数据根据使用数据位置不同有两种获取数据文件中数据的方法。第一种 请求参数请求行、请求头、请求体中使用数据文件中的数据使用{{}}包裹csv文件 字段名或json文件中的key如{{username}}或{{password}}第二种 代码断言、请求前置脚本中使用数据文件中的数据需要借助 postman 提供的关键字data点csv文件的字段名或json文件的key如data.username或data.password特性1postman会循环一行一行的读取{}中的数据2postman会自动给所有非数值数据添加进行包裹。建议书写json数据时无论是不是字符串都可以用包裹value的值案例需求批量查询手机号归属地、所属运营商校验运营商数据正确性接口http://cx.shouji.360.cn/phonearea.php?number13012345678测试数据手机号13012345678运营商联通手机号13800001111运营商移动手机号18966778899运营商电信步骤1测试单个接口工作中 参数和响应体数据对应关系。2写好数据文件按csv或json对应语法的语法格式组织数据3替换上述用例中的两处归属地在代码中用data.字段名替换手机号在查询参数中用{{字段名}}替换4强调一旦替换完成Send就不再能正常获取 相应数据。数据必须从数据文件中读取才能正常发送请求Send不具备读取数据文件的功能5选择使用数据文件的用例集进入Runner页面导入数据文件运行。6如果有异常借助postman的控制台查看。小结借助数据文件实现“数据驱动”。——有多少条数据对应就有多少个http请求。生成测试报告1批量执行测试用例借助数据文件2导出 测试用例集建议与数据文件放在一起3终端cmd执行测试报告命令newman run 用例集名称.json -e 环境文件.json -d 数据文件名.csv/.json -r html --reporter-html-export 报告名称.html7、批量执行测试用例1进入 Runner 页面选择要批量执行的用例集2自动选中所有http请求设置迭代次数、延时、引入外部文件3点击 Run 批量执行测试用例完成批量执行8、测试报告安装插件newman1先下载安装Node.jshttps://nodejs.org/en/2打开cmd输入node如果没有报错而是显示“”说明node安装成功。3安装newman打开cmd输入npm install -g newman npm cache clean --force4通过查看newman版本测试安装是否成功打开cmd输入newman -v出现版本信息5newman基于postman生成html测试报告所以还需安装html插件必须和newman在同一路径下nmp install newman-reporter-html使用newman生成测试报告1批量执行测试用例集。确认无误2导出Export用例集。得到xxx.json文件建议与数据文件放在一起3在终端(cmd)中执行命令生成测试报告# 现在 终端中测试一下。 newman run xxxx.json # 完整的命令 newman run xxxx.json -e 环境变量文件 -d 外部数据文件 -r html --reporter-html-export 测试报告名.html # 示例 newman run 批量执行测试用例.postman_collection.json -r html --reporter-html-export 我的第一个测试报告.html # 如果添加 -r html 就报错说明: newman-reporter-html 安装失败三、Postman接口测试实践以某公司的人力资源管理系统接口测试为例来具体说明Postman在具体项目中的实践。1、项目环境说明目标熟悉项目功能以及业务流程了解项目架构项目简介功能模块、技术架构功能模块组织管理、组织管理、员工管理、招聘管理、劳动合同、培训管理、考勤管理、绩效管理、福利管理、工资管理技术架构前端后端技术架构图业务流程图等2、初始化项目环境新建用例集 Collection1用例集名称可以用项目名称如xxx项目测试用例集2用例集中按照模块建立文件夹folderfolder名称可以就用模块名称如登录模块3功能模块中按照接口建立该模块的接口请求等也可以继续新建folder创建环境变量将生产环境与测试环境分开。如线上地址和测试地址base_url等。3、设计编写测试用例以登录模块和员工管理模块为例来说明用Postman设计编写接口测试用例。步骤首先根据开发的接口文档整理出接口测试用例文档并过审。然后根据过审的接口测试用例文档到Postman中编写接口测试用例。登录模块接口共性分析1由于是同一个接口因此他们的请求方法、URL、请求头完全一致2请求体请求数据各不相同3预期结果大致分为3类操作成功——登录成功、多参、全部参数用户名密码错误——其他情况抱歉系统繁忙——无参。实现接口用例编写登录模块登录成功、用户名为空、用户名包含特殊字符、用户名超过11位12位、用户名不足11位10位、用户名错误、用户名未注册密码为空、密码包含特殊字符、密码为1位、密码为100位、密码错误必选参数全部参数、多参、少参少mobile、无参、参数错误mobile参数名错误等。用例编写就集中在Body和Tests中不同的只是Body中的参数数据不一样和断言内容的不同。以登录成功接口为例1添加请求Add Request 请求方法为POST接口地址为{{base_url}}/api/sys/login请求头Headers参数KEY为Content-TypeVALUE为application/json请求体参数为JSON格式的数据mobile和password的值。2添加断言在Tests界面添加响应状态码断言和JSON响应断言员工管理模块步骤分析1登录成功返回的“令牌”被 添加、查询、修改、删除 员工接口依赖。2添加员工成功返回“员工id”被 查询、修改、删除 员工接口依赖。以上依赖关系可借助postman关联和环境变量来实现步骤实施提取并使用令牌1发送http登录请求在响应体中得到data值发送请求2将data值拼接“Bearer”和“空格”组成一个合法令牌3将拼接后的令牌设置在环境变量中在Tests中通过代码写入拼接合法令牌并设置环境变量代码// 拼接 data 的值添加 Bearer 和 空格组成合法令牌 // 获取响应体保存在 jsonData变量中 var jsonData pm.response.json() // 提取 data 值保存在 tmp_token中 var tmp_token jsonData.data // 拼接 Bearer 和 空格 到 data 值的前面Bearer tmp_token pm.environment.set(env_token, Bearer tmp_token)4在添加员工的Headers中调用令牌Authorization发送请求添加员工保证手机号的唯一性如果手机号有添加过则修改新的未添加过的手机号提取添加员工的id1获取添加员工成功的data下面的id值2将员工id设置环境变量代码写入Tests中3发送send之前注意先修改手机号保证手机号唯一4点击“眼睛”查看确认环境变量添加成功 提取新增员工id并设置环境变量和添加断言代码// 获取响应体保存到jsonData变量中 var jsonData pm.response.json() // 提取 data 值保存tmp_id 变量中 var tmp_id jsonData.data.id // 设置 tmp_id 到环境变量中 pm.environment.set(env_emp_id, tmp_id) pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); pm.test(断言success的值为true, function () { var jsonData pm.response.json(); pm.expect(jsonData.success).to.eql(true); }); pm.test(断言code的值为10000, function () { var jsonData pm.response.json(); pm.expect(jsonData.code).to.eql(10000); }); pm.test(断言message的值为 操作成功, function () { var jsonData pm.response.json(); pm.expect(jsonData.message).to.eql(操作成功); });查询员工路径参数url/:target查询员工请求Params截图查询员工请求Headers截图查询员工请求Tests截图断言代码pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); pm.test(断言success的值为true, function () { var jsonData pm.response.json(); pm.expect(jsonData.success).to.eql(true); }); pm.test(断言code的值为10000, function () { var jsonData pm.response.json(); pm.expect(jsonData.code).to.eql(10000); }); pm.test(断言message的值为 操作成功, function () { var jsonData pm.response.json(); pm.expect(jsonData.message).to.eql(操作成功); }); pm.test(断言data中id的值为 1447229608624652288, function () { var jsonData pm.response.json(); pm.expect(jsonData.data.id).to.eql(pm.environment.get(env_emp_id)); });4、批量运行测试用例1给 每个http请求添加 断言成功断言2点击用例集名称-run-进入Runner界面-点击批量执行3导出用例集用例集-Export5、生成测试报告1导出环境文件environments-环境-Export2将环境文件 与 测试用例集文件放置在同一个目录下3cmd终端中执行命令newman run 批量执行后导出的测试用例集文件.json -e 环境文件.json -d 外部数据文件 -r html --reporter-html-export 测试报告名.html最后下方这份完整的软件测试视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。