接口测试学习笔记

文章目录

  • 认识url
  • http协议
  • 接口规范
  • Postman实现接口测试
    • 设计接口测试用例
    • 使用软件发送请求并查看响应结果
    • Postman 自动关联
    • Postman如何提交multipart/form-data请求数据
    • Postman如何提交查询参数
    • Postman 如何批量执行用例
    • 单接口测试
    • Postman 断言
    • Postman参数化
  • 接口测试自动化
    • request入门
    • 自动化实现

认识url

  • 互联网上标准资源的地址,一般称为统一资源定位符
  • 组成:协议://hostname:[port]/path/[?查询参数1&查询参数2]
  • 示例:
    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=84053098_3_dg&wd=mysql%20desc&oq=mysql%2520%25E5%25AD%2597%25E7%25AC%25A6%25E4%25B8%25B2%25E9%2595%25BF%25E5%25BA%25A6&rsv_pq=a1182568005b8a7b&rsv_t=c237j3Sa1r6hmKdWk1jv8fDNgTouU%2FaXxVtMvt9hnoX3bPes%2Flk6Xl7H06sI4yAoqIrCAQ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=7&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=2953&rsv_sug4=3776
    • 协议:数据传输的格式,如http、https
    • 服务器地址:域名或ip,示例中是www.baidu.com
    • 端口:一个应用程序对外访问的唯一标识,通常是80(http)、443(https) 协议默认的端口可以默认不写
    • 资源路径:端口号后,?之前的部分
    • 参数:客户端向服务器传递的数据,参数与路径之间用?隔开,多个参数之间用&隔开

http协议

  • http:超文本传输协议,基于请求与响应的应用层协议

  • 作用:规定了客户端与服务器之间的信息传递规范,是二者共同遵守的协议

  • 组成:

    • HTTP请求:定义请求数据格式
      • 请求行、请求头、请求体
      • 常用的请求方法:
        • GET:从服务器获取资源
        • POST:从服务器新建一个资源
        • PUT:从服务器更新资源
        • DELETE:从服务器删除资源
      • 请求头:第二行到空白行之间
        • 作用:通知服务器客户端请求信息
        • 特点:键值对,每行一对
        • Content-Type:定义请求体的数据类型
          • text/html:htm格式
          • image/jepg:jpg图片格式
          • application/json:json数据格式
          • application/x-www-form-urlencoded:表单默认的提交数据格式
      • 请求体:空白行之后的内容
        • 作用:传输数据实体
        • 请求体常在post、put方法中使用
        • 常配合的请求头:Content-Type和Content-Length
    • HTTP响应:定义响应数据格式
      • 状态行、响应头、响应体
      • 状态行:响应数据的第一行
        • 作用:描述服务器的处理结果
        • 状态行由协议版本号、状态码、状态消息组成
        • 状态码:
          • 1xx:指示信息
          • 2xx:成功
          • 3xx:重定向
          • 4xx:客户端错误
          • 5xx:服务端错误
      • 响应头:
        • 位置:第二行到空白行之间
        • 作用:描述客户端要使用的一些附加信息
        • 特点:由键值对组成,每行一对
      • 响应体:
        • 位置:空行之后
        • 作用:服务器返回的数据实体
        • 特点:由图片、json、xml、html等多种类型
  • 常见的状态码: 在这里插入图片描述

接口规范

为什么要有接口规范?
为了让前后端开发人员更好的配合,提高工作效率。
在这里插入图片描述

  • 传统接口风格

示例:对用户进行操作的相关接口
在这里插入图片描述

  • RESTful:一种网络应用程序的设计风格和开发方式,提供一组设计原则和约束条件

示例:
在这里插入图片描述

特点:
1. 请求api的url用来定位资源
2. 通过标准的http方法,对资源进行增删改查等操作
3. 利用http状态码,返回状态信息
  • 两种接口风格有什么区别?
    在这里插入图片描述

Postman实现接口测试

设计接口测试用例

1. 提取测试点:

使用功能测试的方法,通过业务流程图,梳理测试点,提取业务路径到xmind中。

2. 解析接口文档:

问:为什么要解析接口文档?
答:熟悉接口信息,为设计接口测试用例做准备问:接口文档一般由谁编写?作用是?
答:一般由后端开发编写,用来描述接口信息的文档问:如何进行接口文档解析?
答:1)分析接口之间的依赖关系2)分析接口请求(如 url,请求方法,请求头,请求参数类型,请求参数等)3) 分析接口响应(如 响应状态码,响应数据等)

3. 编写测试用例

根据接口文档和提取的业务路径,编写测试用例:

ID模块优先级用例名称接口名称前置条件请求URL请求方法请求头请求参数类型请求参数预期结果

使用软件发送请求并查看响应结果

步骤:

  1. 设置请求方式
  2. 设置接口url
  3. 设置请求头
  4. 设置请求数据
  5. 点击send 发送
  6. 查看响应状态码
  7. 查看响应数据

Postman 自动关联

步骤:

  1. 在前一个用例的test 中获取响应结果,并设置需要的值为环境变量
    • pm.response.json() 获取响应结果json
    • pm.enviroment.set() 设置环境变量
  2. 在需要的用例中使用 {{变量名}} 来获取变量值

Postman如何提交multipart/form-data请求数据

步骤:

  1. 设置请求方式
  2. 设置接口url
  3. 设置请求头
  4. 设置请求数据:body->form-data->file->选择上传文件
  5. 点击send发送
  6. 查看响应状态码
  7. 查看响应数据

Postman如何提交查询参数

  • 方法1:直接在接口url后面跟?查询参数
  • 方法2:设置parameter区域

Postman 如何批量执行用例

  1. 点击测试集中的run按钮,批量执行用例
  2. 在弹出的Collection Runner窗口,点击运行
  3. 查看测试结果

单接口测试

  1. 分析接口文档,提取测试点 xmind 脑图

在这里插入图片描述

  1. 根据测试点,编写测试用例 excel
ID模块优先级用例名称接口名称前置条件请求URL请求方法请求头请求参数类型请求参数预期结果
  1. 使用postman,实现并执行测试用例

在这里插入图片描述

Postman 断言

  • 断言的作用:让工具代替人工,自动判断实际结果跟预期结果是否一致
  • Postman 如何进行断言?
# 常用的断言方式有:
# 1、断言响应状态码
pm.test("Status code is 200", function () {pm.response.to.have.status(200);});
# 2、断言响应text是否包含特定文本
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");});
#3、断言响应json 的某个值,是否与预期结果相等
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);});

Postman参数化

  • 参数化的作用:提高测试脚本的复用性
  • Postman如何实现参数化?
    • 准备数据文件 json文件,每项数据以json形式组织成一个列表,保存在json文件中;
    • 引用数据文件:
      • 请求中使用:{{变量名}}来引用变量
      • 在代码中使用:data.变量名 来引用变量
    • 执行用例

接口测试自动化

自动化测试框架目录结构:

  • api:封装接口信息
  • data:存放测试数据
  • script:编写测试脚本
  • common:存放通用工具类
  • report:存放测试报告
  • config.py:定义项目基本配置信息
  • pytest.ini:pytest 配置文件

request入门

# 导包
import request
# 发送request请求,并返回响应
# request.请求方法 发送相应的请求,并返回响应结果
# 参数 json 提交json数据;参数headers 提交 headers 数据
response = request.get(url="", json=, headers=)
# 打印响应
print(response.status_code)
print(response.text)
print(response.json())

自动化实现

1、封装接口

# 在api文件夹中创建对应接口文件
# 在该文件中对该接口进行封装
# 导包
import request
# 创建接口类
class LoginAPI:# 初始化def __init__(self):# 定义当前接口urlself.image_api = "" # 获取验证码url接口self.login_api = "http:..." # 登录url接口# 封装接口,并获取响应结果def image(self):return request.get(self.image_api)def login(self, login_data):return self.post(self.login_api, json=login_data}

2、编写测试用例

# 在script文件夹中创建py文件
# 导包
from api.login import LoginAPI
# 创建测试类
class TestLoginAPI():# setupdef setup():# 实例化接口对象login_api = LoginAPI()# teardowndef teardown():pass# 编写测试用例def test_login_success():pass

3、 数据驱动实现

# 导包
import pytest
# 定义数据,每条数据以元祖的形式组织,并通过列表组合起来
test_data = [(1, 2...), ()]
# 在用例前使用pytest的装饰器
@pytest.mark.parameterize("参数1,参数2...", test_data)
def test_login(self, 参数1,参数2...):pass

4、json文件实现数据驱动

#将每条数据以json的形式组织,然后通过列表组织起来,放在data文件夹下,保存为xxx.json
编写方法,将json文件读取,并将json列表组织的形式转化为元祖列表组织的形式
结合步骤3,使用pytest的装饰器 @pytest.mark.parameterize 以实现json文件数据驱动

5、config文件使用

congfig文件中保存基本的url 和 项目的路径等基本信息

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

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

相关文章

家有一宝,快乐翻倍,最新最全面基于AdGuard Home 自建 DNS 防污染、去广告教程、安装部署详解、优化增强设置详解

家有一宝,快乐翻倍,最新最全面基于AdGuard Home 自建 DNS 防污染、去广告教程、安装部署详解、优化增强设置详解。支持各个客户端,全平台覆盖。 AdGuard Home 部署的方式有很多种,一般二进制文件部署和直接编译到 OpenWrt 系统中是大家所常用的。而博主个人倾向于使用 Dock…

Qt/C++控件设计器/属性栏/组态/可导入导出/中文属性/串口网络/拖曳开发

一、功能特点 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个。拖曳到画布自动生成对应的控件,所见即所得。右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用。独创属…

CTF特训(一):ctfshow-RCE挑战

CTF特训(一)&#xff1a;ctfshow-RCE挑战 FLAG&#xff1a;可后来&#xff0c;除了梦以外的地方&#xff0c;我再也没有见过你 专研方向: 代码审计&#xff0c;PHP 每日emo&#xff1a;其实挺迷茫的&#xff0c;不知道该干什么,(骗你的) RCE挑战1 <?phperror_reporting(0)…

数据密钥管理有哪些常见技术

数据密钥管理涉及到许多复杂而重要的技术&#xff0c;以下是一些常见的数据密钥管理技术&#xff1a; 密钥生成技术&#xff1a;这是数据密钥管理的第一步&#xff0c;需要生成安全、随机且唯一的密钥。常见的密钥生成算法包括RSA、ECC(椭圆曲线密码学)等。这些算法能够生成长度…

EternalBlue【永恒之蓝】漏洞详解(复现、演示、远程、后门、入侵、防御)内容丰富-深入剖析漏洞原理-漏洞成因-以及报错解决方法-值得收藏!

漏洞背景&#xff1a; 1.何为永恒之蓝&#xff1f; 永恒之蓝&#xff08;Eternal Blue&#xff09;爆发于2017年4月14日晚&#xff0c;是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限&#xff0c;以此来控制被入侵的计算机。甚至于2017年5月12日&#xff0c; 不法分子…

2015年第四届数学建模国际赛小美赛B题南极洲的平均温度解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 B题 南极洲的平均温度 原题再现&#xff1a; 地表平均温度是反映气候变化和全球变暖的重要指标。然而&#xff0c;在以前的估计中&#xff0c;在如何界定土地平均数方面存在一些方法上的差异。为简单起见&#xff0c;我们只考虑南极洲。请建…

mysql-exporter监控部署(k8s内)tensuns专用

一、前言 在k8s内部署mysql-exporter监控需要用到deployment、service服务 二、部署 在被监控的mysql中创建监控用户 mysql -u root -p GRANT PROCESS, REPLICATION CLIENT ON *.* TO monitor% identified by 12345678; flush privileges; 创建mysql-exporter服务的yaml文件存…

微信小程序预览pdf,修改pdf文件名

记录微信小程序预览pdf文件&#xff0c;修改pdf名字安卓和ios都可用。 1.安卓和苹果的效果 2.需要用到的api 1.wx.downloadFile wx.downloadFile 下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求&#xff0c;返回文件的本地临时路径 (本地路径)&#xff0c;单次下载…

振弦采集仪在地铁隧道施工监测中的应用与分析

振弦采集仪在地铁隧道施工监测中的应用与分析 振弦采集仪是一种常用的地铁隧道施工监测工具&#xff0c;它通过测量隧道结构中的振弦变化来判断隧道施工的稳定性和安全性。振弦采集仪的应用与分析可以帮助工程师监测地铁隧道施工过程中的变化&#xff0c;及时发现可能的问题并…

test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比

拓展阅读 test-01-java 单元测试框架 junit 入门介绍 test-02-java 单元测试框架 junit5 入门介绍 test-03-java 单元测试框架 testNG 入门介绍 junit/junit5/testNG 详细对比 test assert-01-Google Truth 断言 test 系统学习-03-TestNG Spock testng 入门使用教程 开源…

探索 WebRTC:数字世界的实时通信魔法

前言 在当今日常生活中&#xff0c;我们期望能够随时随地与朋友、同事或家人进行实时沟通。WebRTC&#xff08;Web实时通信&#xff09;技术就像一种魔法&#xff0c;让这些交流变得无比便捷&#xff0c;而且完全在浏览器中实现&#xff0c;无需下载任何额外应用或插件。 Web…

对接日志服务器系统,将业务服务器、数据库服务器等系统日志rsyslog统一推送或接入至日志服务器进行检测及日志的抓取分析。

1、客户端业务系统服务器配置&#xff0c;系统日志配置文件默认存放在/etc/rsyslog.conf下&#xff1b; 2、打开系统日志推送配置&#xff08;其它邮件日志、开机日志、消息日志等都可统一接入&#xff09; 3、配置推送地址和协议 这里特别说明一下&#xff1a;【注意&#xff…

stm32学习笔记:TIM-定时中断和外部时钟

定时器四部分讲解内容&#xff0c;本文是第一部分 ​​​​​TIM简介 基本定时器 时基单元&#xff1a;预分频器、计数器、自动重装载寄存器 预分频器之前&#xff0c;连接的就是基准计数时钟的输入&#xff0c;由于基本定时器只能选择内部时钟&#xff0c;所以可以认为这根…

Unity预设体

目录 预设体是什么&#xff1f; 如何创建预设体&#xff1f; 如何修改预设体&#xff1f; 如何删除预设体&#xff1f; 预设体是什么&#xff1f; Unity中的预设体&#xff08;Prefab&#xff09;是一种可重复使用的游戏对象模板。它允许开发者创建一个或多个游戏对象&…

DVWA靶场中的xss-反射型xss、存储型xss的low、medium、high的详细通关方法

目录 1.DVWA反射型xss &#xff08;1&#xff09;Low&#xff1a; &#xff08;2&#xff09;Medium&#xff1a; &#xff08;3&#xff09;Heigh 2.xss存储型 &#xff08;1&#xff09;Low&#xff1a; &#xff08;2&#xff09;Medium &#xff08;3&#xff09;He…

实现 Spring Boot 项目热重载,无需重启,省时省力

实现 Spring Boot 项目热重载&#xff0c;无需重启&#xff0c;省时省力 插件介绍 通过 JRebel 插件 实现 Spring Boot 项目热重载。类似于前端 Webpack 热重载功能 无需重启&#xff0c;省时省力 安装插件 打开 IDEA 在插件中搜索&#xff1a;JRebel 安装成功后重启IDEA …

1.SQL - 概述

1. SQL语句分类 • 数据定义语言&#xff1a;简称DDL(Data Definition Language)&#xff0c;用来定义数据库对象&#xff1a;数据库&#xff0c;表&#xff0c;列等。关键字&#xff1a;create&#xff0c;alter&#xff0c;drop等 • 数据操作语言&#xff1a;简称DML(Data …

一起玩儿物联网人工智能小车(ESP32)——17. 用ESP32的ADC功能读取电源电压

摘要&#xff1a;本文主要介绍如何使用ESP32的ADC功能&#xff0c;读取物联网智能小车的电池电压 今天介绍一个ESP32的新功能——如何利用ESP32的引脚&#xff0c;采集模拟量信息。在前面GPIO的学习中我们知道&#xff0c;可以利用GPIO的引脚读取外部设备输出的高低电平信号&am…

什么是LangChain

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 LangChain 是一个旨在简化使用大型语言模型&#xff08;LLM&#xff09;创建应用程序的框架。它提供了许多功能&#xff0c;使与LLM的合作变得更加容易&#xff0c…

【Mybatis】我抄袭了Mybatis,手写一套MyMybatis框架:学会使用mybatis框架

上一篇文章中&#xff0c;我们学习了通过JDBC与MySQL进行交互。如果我们平常在项目中使用mybatis框架作为我们的orm框架。这一次我们就来学习如何使用框架。我们项目中使用到maven。我们直接通过pom文件的方式给他引入进来。 MyBatis是一个简单而强大的持久层框架&#xff0c;…