接口测试学习笔记

文章目录

  • 认识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):
		# 定义当前接口url
		self.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():
	# setup
	def setup():
		# 实例化接口对象
		login_api = LoginAPI()
	# teardown
	def 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 和 项目的路径等基本信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】Spring是什么

什么是spring&#xff1f; Spring的基础知识铺垫 IOC AOP<-Spring->容器->生态 先说你的认知&#xff0c;总-分结构 spring是一个基础的框架&#xff0c;同时提供了Bean的容器&#xff0c;用来方便装载具体的Bean对象&#xff0c;之前在使用对象的时候必须自己new&…

C语言操作符详解+运算符优先级表格

目录 前言 一、操作符是什么&#xff1f; 二、操作符的分类 三、算术操作符 四、逻辑操作符 五、比较操作符 六、位操作符 七、赋值操作符 八、其他操作符 九、运算符优先级表格 总结 前言 在编写程序时&#xff0c;最常用到的就是操作符&#xff0c;本文将详细的介绍…

STM32的以太网外设+PHY(LAN8720)使用详解(7):以太网数据接收及发送测试

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册 4.Wireshark1 以太网数据接收测试 1.1 以太网数据接收测试&#xff08;轮询&#xff09; 我们在主循环内轮询RX DMA描述符标志位查看是否接收到了数据&#xff0c;如果接收到了则将数据…

在nodejs中使用讯飞星火大模型3.0的demo

需求&#xff1a; 在nodejs引入讯飞星火大模型的api接口, 思路 看了一下官方文档 api连接为一个WebSocket Secure&#xff08;WSS&#xff09;连接&#xff0c;具体思路如下&#xff1a; 引入 crypto 和 ws 模块&#xff0c;分别用于生成加密签名和创建 WebSocket 连接。&am…

27. 过滤器

Filter(过滤器)简介 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截&#xff0c;从而在 Servlet 进行响应处理的前后实现一些特殊的功能。在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序&#xff1a;Filter, FilterChain, FilterConfigFi…

PHP笔记

文章目录 PHP一、什么是PHP二、PHP集成环境的安装三、WampServer四、PHP基础PHP标准格式php注释变量的定义传值替换变量的作用域变量的检测与删除static静态变量进制转换响应头字符串边界定位符字符串函数常量的定义三元表达式 五、基础文件引入点函数参数类型约束以及严格模式…

OpenAI 官方 Prompt 工程指南:写好 Prompt 的六个策略

其实一直有很多人问我&#xff0c;Prompt 要怎么写效果才好&#xff0c;有没有模板。 我每次都会说&#xff0c;能清晰的表达你的想法&#xff0c;才是最重要的&#xff0c;各种技巧都是其次。但是&#xff0c;我还是希望发给他们一些靠谱的文档。 但是&#xff0c;网上各种所…

Postman接口测试之Post、Get请求方法

一、基础知识 1.HTTP的五种请求方法&#xff1a;GET&#xff0c; POST &#xff0c;HEAD&#xff0c;OPTIONS&#xff0c; PUT&#xff0c; DELETE&#xff0c; TRACE 和 CONNECT 方法。 GET请求&#xff1a;请求指定的页面信息&#xff0c;并返回实体主体。&#xff08;通常用…

“用户名不在 sudoers文件中,此事将被报告” 解决方法

原因 当普通用户需要安装文件时&#xff0c;无法用yum install ** -y直接安装时&#xff0c;采用sudo yum install **; 但是发现提示“用户名不在 sudoers文件中&#xff0c;此事将被报告” 解决方法。 这是因为该普通用户不在sudoers文件中&#xff0c;所以要找到该文件&am…

SpringIOC之BeanFactoryResolver

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

2024年软件测试工程师如何从功能测试转成自动化测试?

前言 接触了太多测试同行&#xff0c;由于多数同行之前一直做手工测试&#xff0c;现在很迫切希望做[<u>自动化测试</u>](javascript:;)&#xff0c;其中不乏工作5年以上的同行。 从事软件自动化测试已经近十年&#xff0c;接触过底层服务端、API 、Web、APP、H5…

Ethercat 读从站状态报文分析

涉及的从站寄存器&#xff1a;Register AL Status 0x0130:0x0131 。 1&#xff0c;发送报文 1&#xff09;IgH dmesg看到的报文 [18773.590655] geshifei ec_master_send_datagrams 1059: Adding datagram datagram->index0 [18773.590656] EtherCAT DEBUG 0: frame siz…

机器学习---推荐系统案例(二)

四、推荐系统---模型训练 1、模型训练代码 模型训练代码参照scala文件&#xff1a;Recommonder.scala 1.Logger.getLogger("org.apache.spark").setLevel(Level.ERROR) 2.val conf new SparkConf().setAppName("recommonder").setMaster("local[*…

《成才》期刊投稿方式发表要求

《成才》杂志是国家新闻出版总署批准&#xff0c;面向国内外公开发行的教育期刊&#xff0c;以“大教育视野、新理念成才”为办刊宗旨&#xff0c;全面贯彻党的教育方针&#xff0c;理论联系实际&#xff0c;开展教育科学研究和人才培养研究&#xff0c;交流科技成果&#xff0…

TrustZone之示例用例——加密文件系统

移动设备如智能手机包含大量个人数据。如果设备丢失或被盗&#xff0c;用户会关心这些数据的机密性。这就是为什么大多数最新的设备支持文件系统加密的原因。TrustZone 可以作为保护这些数据的解决方案的一部分。 存储在外部闪存中的数据是加密的。在启动时&#xff0c;设备对用…

React学习计划-React16--React基础(二)组件与组件的3大核心属性state、props、ref和事件处理

1. 组件 函数式组件&#xff08;适用于【简单组件】的定义&#xff09; 示例&#xff1a; 执行了ReactDOM.render(<MyComponent/>, ...)之后执行了什么&#xff1f; React解析组件标签&#xff0c;找到了MyComponent组件发现组件是使用函数定义的&#xff0c;随后调用该…

Hive文件存储与压缩

压缩和存储 1、 Hadoop压缩配置 1) MR支持的压缩编码 压缩格式工具算法文件扩展名是否可切分DEFAULT无DEFAULT.deflate否GzipgzipDEFAULT.gz否bzip2bzip2bzip2.bz2是LZOlzopLZO.lzo否LZ4无LZ4.lz4否Snappy无Snappy.snappy否 为了支持多种压缩/解压缩算法&#xff0c;Hadoop…

数据结构 | 查漏补缺

目录 数据的基本单位 冒泡排序 DFS和BFS中文 Prim 比较 中序线索二叉树 顺序栈 链栈 时间复杂度 循环队列 求第K个结点的值 数据的基本单位 数据元素 循环队列sq中&#xff0c;用数组elem[0‥25]存放数据元素&#xff0c;设当前sq->front为20&#xff0c;sq-&g…

【C++11特性篇】模板的新一力将:可变参数模板 [全解析]

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Linux》专…

循环神经网络中的梯度消失或梯度爆炸问题产生原因分析(二)

上一篇中讨论了一般性的原则&#xff0c;这里我们具体讨论通过时间反向传播&#xff08;backpropagation through time&#xff0c;BPTT&#xff09;的细节。我们将展示目标函数对于所有模型参数的梯度计算方法。 出于简单的目的&#xff0c;我们以一个没有偏置参数的循环神经…