| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> postma进阶 -> 正文阅读 |
|
[开发测试]postma进阶 |
1.postman的介绍与安装Postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大,不仅测试人员会使用,开发人员也会经常使用它进行接口的测试 官方网站: Postman 主要特点: (1). 简单易用的图形用户界面 (2). 可以保存接口请求的历史记录 (3). 使用测试集Collections可以更有效的管理组织接口 (4). 可以在团队之间同步接口数据 (5). 下载地址: https://www.getpostman.com/apps postman数据集 ? postman高级用法1.用例管理 2.postman的断言 3.全局变量与局部变量 4.请求前置脚本 5.请求关联 6.用例批量执行 7.读取外部文件实现参数化 8.测试报告产出 1.用例管理在测试活动中, 针对需求和接口文档进行用例设计时, 我们会发现针对一个需求或一个接口要考虑多种情况, 设计的用例要尽量覆盖需求. 在接口测试中, 如果使用工具(postman, Jmeter)实现, 需要对用例进行管理. postman具有用例管理的功能, 具体的实现步骤如下: 1. 创建测试集-<New Collection> Collection可以理解成一个项目(系统),包含多个接口请求 2. 创建目录-<Add Folder> Folder可以理解成一个项目模块 3. 添加请求-<Add Request> 具体操作步骤及截图如下: (1).创建测试集- 点击‘New Collection’,在弹出框中输入测试集的名称和其他信息,再点击‘Create’按钮 ?(2).创建目录- 在测试集上点击右键选择‘Add Folder’,在弹出框中输入目录的名称和其他信息,再点击‘Create’按 钮 ? ?(3).添加请求- 在目录上点击右键选择‘Add Request’,在弹出框中输入请求的名称和其他信息,再点击保存按钮 ? 2.Postman断言断言, 是让程序判断预期结果与实际结果是否一致的. python中有断言的语法, postman中也可以实现断言. 先看python的实现吧! 2.1 python中断言 # 断言: python中的断言使用assert来实现, 其语法形式为: assert 表达式, '断言信息' ? ?如果断言通过, 则继续执行断言以下的代码. 如果断言未通过, 则程序直接抛出异常, 异常名称为: AssertionError, 异常信息为: 断言信息, 如未指定断言信息, 则不显示断言信息. ? ? ? ? ? ? # 示例1: 断言不指定断言信息 def func(a): ? ?assert a == 1 func(2) ? # 结果为: /Users/jeremy/.virtualenvs/h2005/bin/python /Users/jeremy/MyData/edu/code/demo2.py Traceback (most recent call last): ?File "/Users/jeremy/MyData/edu/code/demo2.py", line 104, in <module> ? ?func(2) ?File "/Users/jeremy/MyData/edu/code/demo2.py", line 97, in func ? ?assert a == 1 AssertionError ? ? ? ? ? ? # 示例2: 断言指定断言信息 def func(a): ? ?assert a == 1, '断言未通过' func(2) ? ? # 结果为: /Users/jeremy/.virtualenvs/h2005/bin/python /Users/jeremy/MyData/edu/code/demo2.py Traceback (most recent call last): ?File "/Users/jeremy/MyData/edu/code/demo2.py", line 104, in <module> ? ?func(2) ?File "/Users/jeremy/MyData/edu/code/demo2.py", line 97, in func ? ?assert a == 1, '断言未通过' AssertionError: 断言未通过 ? ? ? ? ? ? # 示例3: 断言配合异常处理使用, 尝试执行断言, 如果断言通过则执行断言以下代码, 如果断言未通过, 则直接抛出的异常会被except捕获, 执行except代码. 注意: 此过程由于异常处理的原因, 断言没有机会将异常抛给用户而被except捕捉, 所以断言信息是没有机会显示的. def func(a): ? ?try: ? ? ? ?assert a == 1, ? ? ? ?print('pass, 用例通过!') ? ?except: ? ? ? ?print('fail, 接口存在问题!') ? func(2) ? # 结果为: 'fail, 接口存在问题!' ? ? 2.2 常用postman断言特点与简单使用 # postman断言特点: (1).Postman的断言是使用JavaScript语言编写的,写在‘Tests’标签页里 (2).Tests中的脚本在发送请求之后执行,会把断言的结果(PASS/FAIL)最终在‘Test Results’标签页中展示 简单使用: ? 2.3 postman常用断言# 注意: 1.断言响应状态码是否为200(重点掌握) ? ?2.断言响应体JSON数据校验(重点掌握) ? ?3.断言响应体是否包含指定字符串 ? ?4.断言响应体是否等于指定字符串 ? ?5.断言响应头是否包含指定的头信息 # 断言代码片段介绍(不用背下来, 但是你需要在postman中能够找到, 你看别人的断言能看董) 1. 判断响应状态码是否等于200 (*****) ? ?pm.test("Status code is 200", function () { ? pm.response.to.have.status(200); ? }); ? ? 2. 判断响应体中是否包含指定的字符串 (****) ? ?pm.test("Body matches string", function () { ?pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); ? ? 3. 判断响应体数据是否等于指定的字符串 (***) ? ?pm.test("Body is correct", function () { ? ?pm.response.to.have.body("response_body_string"); ? }); ? ? 4. 校验响应的JSON数据 (*****) ? ?pm.test("Your test name", function () { ? var jsonData = pm.response.json(); ? pm.expect(jsonData.mesage).to.eql("ok"); ? }); ? ? 5. 判断响应头中是否包含指定的头标签 ? ?pm.test("Content-Type is present", function () { ? pm.response.to.have.header("Content-Type"); ? }); ? 2.4 排错技巧 当你的断言出现错误时, 需要进行排错, 可以按照以下套路进行: # 1.检查断言代码片段是否错选了 当断言出现错误时, 我们应首先确定自己的断言代码片段是否是正确的, 比如要判断json数据某个键的值是否包含另一个值, 但却选择了等于. ? ? # 2.检查断言代码是否设置了错误的字段 断言中对结果的判断要根据响应数据的形式进行严格的比对, 不细心很可能出现错误. 比如: json数据中的一个键名为data, 在编写断言代码的过程中却写成了date ? # 3.发送请求, 基于响应数据做初步预判 断言是对接口响应数据的检验, 那断言可定是在请求发送后执行的. 所以当断言出现错误, 这是你一定已经发送了请求, 我们可以打开响应数据进行对比, 来判断断言的执行结果是否存在问题. ? ? # 4.检查请求相关参数 在构造请求时, 可能请求出现了错误, 比如请求方式为post, 但默认为get, 却忘记修改, 当发送请求后获取到的响应数据肯定不是预期的结果, 这时断言就会出错. 应当仔细检查请求的正确性. 请求的正确性可以从以下这几个方面考虑->(请求方法, 请求地址, 请求头信息, 请求体) ? ? # 注意: 当断言出现错误, 经过一系列的排查依然不行, 该怎么办呢? 这是我们可以保存原有断言错误的请求, 重新建立请求, 不要受前一个请求的思维影响, 一步一步的构建请求, 再次尝试. 3.postman设置环境变量3.1 环境变量与全局变量 全局变量: 作用范围是针对postman下面所有测试集均生效 环境变量: - 只对选择了对应环境变量的测试集生效 - 环境一般分为: 开发环境, 测试环境, 生产/线上环境(部分公司可能在测试与生产之间存在预生产环境) - 一套环境中变量不能重复, 但是可以定义多个不重复的变量 3.2 手动设置全局变量与环境变量 (1).全局变量 (2).环境变量 3.3 代码设置全局变量与环境变量 # 在Tests中编写如下代码实现变量的设置, 需要发送请求 # (1).全局变量的设置 pm.globals.set("variable_key", "variable_value"); ? # (2).环境变量的设置 pm.environment.set("variable_key", "variable_value"); ? # 注意: 通过代码实现环境变量的添加, 需要先选中一个环境, 才能设置成功. 3.4 变量的使用 无论在URL中, 还是在请求头中, 或是在请求体中都可以使用{{variable}}的方式使用变量, 但需要注意的是请求体中传递JSON数据一般我们会给实际的值加引号, 比如一个字符串. 但在使用变量时, 不要给{{variable}}添加引号, 否则postman会将“{{variable}}”当做一个字符串. 使用代码获取: // 获取全局变量 var value = pm.globals.get("var_name"); ? // 获取环境变量 var value = pm.environment.get("var_name"); ? 4.请求前置脚本4.1 请求前置脚本实现与场景 // 请求前置脚本 请求前置脚本就是在请求发送前执行的脚本, 请求前置脚本需要写在“Pre-request Script”标签中. 应用场景: - 请求参数中包含一个随机数或者时间戳 - 请求之前需要对请求参数做进一步处理(如:对敏感参数进行加密) 4.2 请求前置脚本案例 //需求: 请求TPshop项目中获取图片验证码的接口,需要在URL中设置随机数 // 请求路径: ? ?http://localhost/index.php?m=Home&c=User&a=verify&r=0.6569606479434671 // 分析: - 在请求图片验证码前, 执行生成随机数的脚本: var r = Math.random(); - 将生成的随机数保存至环境变量中 - 请求图片验证码接口是从环境变量中取出随机数, 作为参数传递给服务器 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 3:00:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |