接口测试学习第二天

news2024/9/21 0:32:47

1、全局变量

  • 概念:在postman全局生效的变量,全局唯一。
  • 设置:
    • 代码设置:pm.globals.set("glb_age",100)

//示例:

pm.globals.set("glb_age",100)

  • 获取:
    • 代码获取:var 接收值的变量 = pm.globals.get("全局变量名")

//示例:

var ret = pm.globals.get("glb_age")

  • 请求参数获取(postman界面获取):{{全局变量名}}

//示例:

{{glb_age}}

为什么要写接口测试用例?

  • 防止测试点漏测,条例清晰;
  • 方便分配工具,评估工作量和时间;
  • 面试时使用;

2、接口测试的测试点

2.1功能测试

  • 单接口功能:
    • 手工测试中的单个业务模块,一般对应一个接口。
      • 登录业务----》登录接口
      • 加入购物车业务---》加入购物车接口
      • ......
    • 借助工具、代码绕开前端界面,组织接口所需要的的数据,展开接口测试。
  • 业务场景功能:
    • 按照用户实际使用场景,梳理接口业务场景。
    • 组织业务场景时,一般只需做正向测试即可(与手工一致)
    • 一般建议用最少的用例覆盖最多的业务场景
      • 登录----搜索商品---加入购物车----下单----支付----评价

3、接口测试与手工测试不同点

1、手工测试,测写入到输入框中的数据是否正确。接口测试测参数 对应的参数值是否正确;

2、接口测试,不单单针对参数值进行,还可以针对参数本身进行测试;

  • 正向参数:
    • 必选参数:所有的必选必填都包含;
    • 组合参数:所有的必选+任意一个或多个可选参数;
    • 全部参数:所有的必选+所有的可选参数
  • 反向参数:
    • 多参:多出一个或多个必选参数(可以任意指定)
    • 少参:缺少一个或多个必选参数;
    • 无参:没有必选参数;
    • 错误参数:参数名输入错误;

4、单接口测试用例

手工测试用例文档8大要素:

  • 编号、用例名称(标题)、模块、优先级、预置条件、测试数据、操作步骤、预期结果

接口测试用例文档要素:

  • 编号、用例名称(标题)、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果

分析接口文档以登录接口为例

 登录模块的测试点:

  • 正向:
    • 登录成功
  • 反向:
    • 用户名为空
    • 用户名包含特殊字符、字母
    • 用户名超过11位(12位)
    • 用户名不足11位(10位)
    • 用户名未注册
    • 密码为空
    • 密码包含特殊字符、字母
    • 密码为1位
    • 密码为100位
    • 密码错误
  • 参数(接口测试特有)
    • 正向
      • 必选参数:正确用户名+正确密码
      • 可选参数:忽略
      • 全部参数:正确用户名+正确密码
    • 反向
      • 多参:多abc:“123”
      • 少参:没有用户名,正确密码
      • 无参:没有任何参数
      • 错误参数(手机号参数名错误):abc:13333333333,password:"123456"

5、导出和导入测试计划

        导出测试计划:选中--》三点选中export;

        导入测试计划:选中---》import;

6、postman断言

postman断言简介

  • postman断言借助javaScript - js语言编写代码,自动判断预期结果与实际结果是否一致。
  • 断言代码写在Tests的标签中。

常用断言

(1)、断言响应状态码

//断言响应状态码
pm.test("Status code is 200", function () {
    //postman的响应结果中应该包含状态码200,200是预期结果
    pm.response.to.have.status(200);
});
  • pm是postman下的一个实例;
  • test()是Pm实例中一个方法,有两个参数;
    • 参数1:在断言成功后,给出的文字提示。可以修改。"Status code is 200";
    • 参数2:匿名函数;

 (2)、断言响应体是否包含某个字符串

//断言响应体是否包含某个字符串
pm.test("Body matches string", function () {
    //pm期望响应文本中包含xxx字符串
    pm.expect(pm.response.text()).to.include('"success":true');
});

  • pm:postman的一个实例
  • test():postman实例的方法,有两个参数
    • 参数1:断言后显示的文字提示信息,可改;
    • 参数2:匿名函数;

案例:

//断言响应体是否包含某个字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include('"success":true');
});

(3)、断言响应体是否等于某个字符串(对象)

pm.test("Body is correct", function () {
    //意思是,pm的响应中应该有响应体xxx
    pm.response.to.have.body("response_body_string");
});

(4)、断言json数据

pm.test("Your test name", function () {
    //var jsonData 用js语法定义一个变量,jsonData就是变量名
    //pm.response.json():代表响应的json结果
    //举例:response.json()
    /*    
    {
    "code": 200,
    ...
    "success": true,
    "traceId": "598a67c79346b0617b6d77f1efb46fe0"
    }
    
    */
    var jsonData = pm.response.json();
    //pm预期json结果key对应的值等于xxx
    pm.expect(jsonData.value).to.eql(100);
});

 举例:

//断言json数据
pm.globals.unset("variable_key");
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.success).to.eql(true);
});
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.data.userBizInfoEntity.baseUserId).to.eql(310000001746);

});

(5)、断言响应头

pm.test("Content-Type is present", function () {
    
    pm.response.to.have.header("Content-Type","application/json");
});

7、全局变量与环境变量 

7.1 概念

  • 全局变量:全局变量是全局唯一的,不可重复定义的变量;
  • 环境变量:
    • 一个变量只能属于某个环境,在某一个环境中变量不可重复定义
    • 在环境与环境之间可以定义重复的变量
    • 一个环境可以包含多个环境变量
    • 常见环境分类:开发环境,测试环境,生产环境;

7.2 设置变量

  • 全局变量
    • 手动设置
    • 代码设置:pm.globals.set("var_name",value)
  • 环境变量
    • 手动设置
    • 代码设置:pm.environment.set(:var_name",value)

7.3 获取变量值

  • 全局变量
    • 请求参数中获取:{{var_name}}
    • 代码中获取:var value = pm.globals.get("var_name")

案例

调用百度首页接口,传时间戳给服务器

实现步骤:

1.在Pre-request Script 标签页中,添加代码,拿到时间戳,写入全局变量

//拿到时间戳

var time = new Date().getTime()

//将时间戳设置到全局变量

pm.globals.set("glb_time",time)

2. 保存,点击send按钮,发送请求。请求发送前执行上述代码。写入全局变量

3. 查看写入的变量

4. 书写URL地址,在请求参数界面中,使用全局变量。{{全局变量名}}

 5. 在postman的控制台,查看发送的http请求;

 

8、postman的关联

介绍:应用于多个http请求之间,有数据关联,或依赖关系时。 

实现步骤

A接口依赖B接口的数据

1、向B接口发送http请求,获取数据。

2、将数据设置至全局变量(环境变量)中。

3、A接口获取全局变量(环境变量)中数据值,进行使用。

案例

请求 获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用。

 

9、批量执行测试用例

9.1 postman 测试报告

  • 安装newman
  • 使用newman生成测试报告

9.2 批量执行测试用例

选中模块点击run,批量执行

9.3 newman 生成测试报告

  • 批量执行测试用例集;
  • 导出测试用例集(得到xxx.json的文件);
  • 使用导出的用例集生成测试报告,在终端执行;

9.4 执行测试

使用newman命令,运行导出的测试集脚本,打开cmd输入;

newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export 测试报告名.html

eg:

newman run demo.postman_collection.json -r html

newman run demo.postman_collection.json -r html --reporter-html-export report.html

命令说明

  • run xxx.json: 表示要执行的postman脚本,即导出的测试集数据
  • -e source: 用来指定环境变量文件的路径
  • -d source: 用来指定测试数据文件的路径

注意:

1、如果添加 -r html就报错! 说明 newman -reporter-html 安装失败!

2、批量导出的测试用例放在一个文件夹里,然后在该文件夹内输入cmd,执行生成测试报告的命令;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java的内部类详解(成员内部类、静态内部类、局部内部类、匿名内部类)

Java知识点总结:想看的可以从这里进入 目录2.2.4、 内部类1、成员内部类2、静态内部类3、局部内部类4、匿名内部类2.2.4、 内部类 一个类定义在另一个类内,那么这个类就是一个内部类,比如:在类A中定义一个类B,B就是内…

英特尔锐炫秒杀RTX 3060,XeSS现已支持超过35款游戏!

一款显卡的性能可以达到什么程度?除了架构、规格等硬件因素,驱动的优化程度同样至关重要。Intel携带Arc锐炫回归独立显卡市场,作为“后起之秀”,驱动的优劣更是关键中的关键。Intel也正是这么做的。2022年6月,Intel正式…

2023 NFT防骗指南:六大骗局,3招带你远离…

网上流传着一句:币圈一天,人间一年。在刚刚过去的农历新年,一直低迷的加密领域迎来了“短暂性复苏”,加密市场总市值重回万亿美元。 同时复苏的还有NFT市场,据欧科云链OKLink链上数据显示,2023年1月份的NFT…

计算机网络-http协议版本对比

概述 HTTP 是基于 TCP/IP 协议的一个应用层协议,是现代互联网的一个基础协议。规定了客户端与服务端之间的通信格式以及所占用的服务端口80(HTTPS是443)。 超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响…

【Flutter】Flutter Developer 101 入门小册 专栏指引

你好,我是小雨青年,一名程序员。 在2023年,我决定做这个Flutter专栏,从基础到部署,一站式解决大家对于Fulltter的学习需求。 目前本专栏的大概目录为本文最后所示,后续随着内容的不断更新,会逐…

2023年“华数杯”国际大学生数学建模B题赛题发布

ICM 问题B:社会稳定早期预警研究 背景 人类和所有的动物一样,都有寻求利益和避免伤害的本能。人类成为创造之主 的关键在于,他们比其他动物更善于避免伤害。危机总是潜伏着未来。人类发展的 历史是一部不断尝试超越危机的历史 (严耀军&#x…

鸿蒙开发学习|基础环境和开发工具

系列文章目录 第一章 HarmonyOS是什么 第二章 基础环境和开发工具 文章目录系列文章目录前言一、DevEco Studio工具简介二、DevEco Studio搭建开发流程1.运行环境要求2.下载和安装DevEco Studio三、安装HarmonyOS开发插件总结前言 HUAWEI DevEco Studio是基于IntelliJ IDEA C…

三阶魔方七步还原法公式备忘录

魔方公式备忘 转动符号图解 魔方七步公式: 1.底面十字还原 2.底角还原 3.中间层还原 上棱到左棱 U’L’U’LUFUF’ 上棱到右棱 URUR’U’F’U’F 4.顶面十字 循环做FRUR’U’F’直到出现十字 5.顶面还原(小鱼公式) 左手 L’U’LU’L’U’2L …

2、Maven——IDEA与eclipse(MyEclipse)创建工程的区别、Maven创建基本java工程

目录 一、IDEA与eclipse创建工程的区别 二、IDEA创建多个工程 1、 创建空工程:Empty Project 2、创建Module 三、Maven创建基本java工程 1、pom.xml 2、依赖坐标的使用 3、远程Maven仓库 4、Maven项目框架 (1) main目录 &#xff…

MySQL之主从复制集群搭建

简述 这篇文章主要记录使用docker compose搭建MySQL主从复制集群搭建,方便后续进行本地测试开发。 这篇文章主要介绍一主一从的搭建过程。 主从架构,可以缓解MySQL的数据存储以及访问的压力。 一. 主从复制原理 原理图如下: 步骤&#xf…

AVL平衡树(Java实现)

概念 AVL树可以定义为高度平衡二叉搜索树,其中每个节点与平衡因子相关联,该平衡因子通过从其左子树的子树中减去其右子树的高度来计算。AVL树是由GM Adelson - Velsky和EM Landis于1962年发明的。为了纪念其发明者,这树结构被命名为AVL。 定…

Android集成Unity

前言 随着前两年元宇宙的提出,虚拟现实开始在各大平台大展身手。各个平台都开始搭上了元宇宙的列车,Unity作为虚拟引擎中的热门,渲染效果和开发效率极其出色;Android作为移动开发的巨头之一也搭上了元宇宙这趟列车。今天&#xf…

图像基础概念

加解串器图像相关的概念:相关的概念:一个像素时钟可以产生两个像素可以通过调大frame freelance或vts来增大 V blinking sensor的基本配置曝光:一行一行进行曝光:每一行曝光时间 非常短 从第一行到最后一行为有效时间同步信号:同步信号的处理同步曝光的需求:曝光的…

IoU Loss综述(IOU,GIOU,CIOU,EIOU,SIOU,WIOU)

边界框回归(BBR)的损失函数对于目标检测至关重要。它的良好定义将为模型带来显著的性能改进。大多数现有的工作假设训练数据中的样本是高质量的,并侧重于增强BBR损失的拟合能力。 一、L2-norm 最初的基于回归的BBR损失定义为L2-norm&#xf…

IIS隐藏敏感数据信息

安装URL Rewrite web.config: 想要隐藏Server和X-AspNet-Version 两项 <system.webServer>节点添加子节点rewrite <system.webServer> <rewrite> <outboundRules> <rule name"REMOVE_RESPONSE_SERVER"> …

python3+requests:接口自动化测试(二)

前言&#xff1a;上篇文章python3requestsunittest&#xff1a;接口自动化测试&#xff08;一&#xff09;&#xff1a;python3requestsunittest&#xff1a;接口自动化测试&#xff08;一&#xff09; - Shapelei - 博客园 &#xff0c;已经介绍了基于unittest框架的实现接口自…

在Spring Boot中整合Katharsis,来快速开发JSON API的Web应用

1 简介 我们进行Web API开发的时候&#xff0c;经常会使用Json格式的消息体&#xff0c;而Json格式非常灵活&#xff0c;不同的人会有不同的设计风格和实现&#xff0c;而JSON API提供了一套标准。但它并不提供直接实现。 Katharsis是JSON API的Java实现&#xff0c;使用它可…

canal env create (mysql -> kafka)

&#xff08;1&#xff09;获取资源及解压 选定安装路径 cd /home下载canal.admin wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz解压canal-admin mkdir canal-admin tar -zxvf canal.admin-1.1.5.tar.gz -C canal-adm…

Nginx服务器上安装SSL证书

Nginx服务器上安装SSL证书1、前提条件2、nginx安装http_ssl_module模块2.1 查看是否安装过http_ssl_module2.2 进入nginx源文件目录2.3 重新编译nginx2.4 用新的nginx覆盖旧的3、https配置(SSL证书安装)3.1 下载证书文件和密钥文件3.2 服务器上创建cert文件夹3.3 配置nginx.con…

2023年中级计算机软考怎么报考呢?软考证书有用吗?

计算机软考简称软考&#xff0c;全称计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;是由人力资源和社会保障部&#xff08;原人事部&#xff09;、工业和信息化部&#xff08;原信息产业部&#xff09;领导的国家级考试&#xff0c;其目的是&#…