Requests库的接口测试实现

news2024/9/21 2:49:52

Requests库是在接口测试中被广泛运用的库,包括模拟请求的下发,请求相关配置和响应结果的获取,核心主体都是通过request库完成。在接口测试中使用非常频繁。

一、Requests库环境搭建

接口测试的核心从模拟请求开始。在Python中,通过requests库实现请求的模拟。

  • 环境部署:pip install requests

Requests库的基本应用:

  • 1.模拟请求 定义url,定义header,定义body,定义请求相关数据内容
  • 2.管理cookie 可以实现cookie的创建,修改,发送
  • 3. 获取响应 所有响应相关内容都可以获取


  二、Requests库接口测试的基本实现

2.1 post方法源码解析

 有些接口是post方法进行测试之前,先看一下post请求的源码:

url : 就是要填写即将请求接口的url

param data : 填入的参数可以是元组,字典和文件等

param json : 会将数据传入body中进行发送

return :会返回一个response对象,所以需要有result 来进行接收


2.2 get方法源码解析

get方法和post 方法类似,最大的区别在于param 参数支持字典,元组这些类型,但是不支持文件。post方法中的body参数是支持文件类型的。


 

2.3接口测试的基本实现 

    接口测试就是三个步骤:
            1. 准备测试数据
            2. 模拟请求下发
            3. 解析响应,并校验

假如我们要对登录接口进行验证,接口提供了url,请求方式,请求参数以及响应结果:

 以下代码是对登录接口的简单测试:

import requests

url = 'http://fecshop.appapi.fancyecoemmerce.com/v1/account/login'
#定义接口的url
#设置请求参数
data = {
    'username' : '123',
    'password' : 'admin'
}
#2.进行请求的下发
res = requests.post(url = url,data = data)#发送一个post请求,返回response对象
#3.对响应结果进行解析和处理
print(res.text)#响应的文本信息

运行一下,可以得到接口定义的返回值:access-token、status、code。这里报错401主要是由于用户端传入参数有误。只需要修改对应参数即可。


2.4获取请求和响应信息 

Requests库默认调用HTTP1.1的版本,进行请求的下发,所以所有的请求方法都包含在内。

响应的 res 中返回的是一个respond对象,可以通过操作对象获取相关信息。

  • 获取文本信息 res.text     text表示响应的文本信息,str数据类型
  • 获取res的json格式 res.json    生成字典格式的json对象
  • 获取响应头res.headers     可以获取到set-cookie

 

  • 获取cookie信息res.cookies  ,得到RequestsCookiesJar对象,对应的信息在后面

通过遍历获取cookie,通过cookie.name 和cookie.value获取cookie对应的名称和值。 

cookies属性获取requestsCookieJar对象,要获取完整的cookie信息需要用循环来获取
 

print(res.cookies)  
for cookie in res.cookies:
    print(cookie.name)
    print(cookie.value)
  • 获取http状态码 res.status_code
  • 获取请求头 res.request.headers   获取请求头:当我们在调用接口的时候,如果接口对请求头有限制,则需要自行在请求之前,配置好请求headers                                                           

对于F12看到的请求是真实发送的请求,控制台输出的请求是代码模拟发送的请求。

通过代码发起请求和在浏览器发起请求,区别在于user-Agent:代表发送请求时的环境

类似于Webdriver 启动的浏览器是零缓存的浏览器,所以我们登陆操作的时候,需要进行验证码的操作。为了避免这种安全机制的产生,所以我们在selenium 中,我们要配置chrome options 加载缓存。

接口测试也有安全机制。直接用request 发送请求,会失败,因为检测到请求和在浏览器发起请求,区别在于user-Agent是不正常的用户。所以我们要设置headers ,将user-Agent改成正常的用户情况。

# 设置请求头参数:都是基于kv对
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 '
                  'Safari/537.36'
}

 

2.5响应结果的断言

 想对响应结果做断言操作,需要先把结果拿出来。判断响应结果的关键内容是否符合预期。对接口的断言是断言,respond的body。

 接口测试的断言,只需要对响应结果或者是响应头进行断言处理即可。而且断言的时候,只需要考虑针对性的某一组数据内容即可

# 进行响应结果的断言
assert 200 == res.json()['code'], '登录失败'
assert 200 == res.status_code  
# 状态码断言只能做辅助手段。所以没有必要的情况下,可以不用写。


2.6接口关联

 比如我们想要验证获取多语言接口,但是需要传入的参数正好是登录接口响应结果得到的access-token,就会涉及到接口关联。

我们需要先获取登录接口的结果,得到access-token,将access-token设置到第二个接口的headers

中,就可以实现接口关联。

# 登录接口测试的基本实现
# 1. 模拟请求的数据内容
url = 'http://apihcc.fecmall.com/v1/account/login'  # 定义接口的url
# 设置请求参数
data = {
    'username': 'admin',
    'password': 'admin123'
}
# 设置请求头参数:都是基于kv对
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 '
                  'Safari/537.36'
}
# 2. 进行请求的下发,获取登录接口的响应结果
res = requests.post(url=url, json=data, headers=headers) 


#第二个接口获取请求头:当你在调用接口的时候,如果接口对请求头有限制,则需要自行在请求之前,配置好请求headers
res.request.headers
# 生成第二个接口的请求下发
url1 = 'http://apihcc.fecmall.com/v1/languages'

headers = {
    'access-token': res.json()['access-token']
}

r = requests.get(url=url1, headers=headers)
print(r.text)

查看结果:

 

接口测试的提前介入,可以很好的定位到后端接口之间的问题,提高整个开发效率。 

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

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

相关文章

Postgres 中文周报:PostgreSQL 2023 热门回顾

2024 新年好!原英文 Postgres Weekly 最新一期回顾了 2023 周刊中的热门点击文章、视频与工具等事项。当然,PostgreSQL 在 2023 年值得回顾的瞬间还有很多,远不止周刊中提到的。因此,在编译原周刊内容的基础上,我们增加…

mysql+关掉密码过期

mysql关掉密码过期 要在MySQL中关闭密码过期功能,可以按照以下步骤进行操作: 登录到MySQL服务器。 使用管理员账户(如root)连接到数据库。 mysql -uroot -ppassword 运行以下命令来查看当前的密码过期设置: SHOW…

学校服务器安装anaconda并配置pytorch环境

学校服务器安装anaconda并配置pytorch环境 1.下载Anaconda2.传到xftp中3.在终端运行脚本命令4.安装pytorch4.1 查看cuda版本4.2 创建自己的环境4.3 下载pytorch4.4 验证pytorch是否安装成功 参考视频:远程服务器安装anaconda并配置pytorch环境 使用服务器运行项目&a…

回顾2023编程之旅

一、前言 看在给了我一个博客专家的份上就继续写写博客,实事求是的讲如果是工作之余去总结csdn写写技术博客,还想混个专家什么的,真的是精力不够。因为里面的灌水的实在太多,比不过的,写这个玩意必须得淡泊名利才能悠然…

ACL16_S 系列 低成本物联网安全芯片,可应用物联网认证、 SIM、防抄板和设备认证等产品上

ACL16_S 芯片是针对物联网认证、 SIM、防抄板和设备认证需求推出的高安全芯片。芯片采用 32 位 ARMCortex™-M0 系列内核,片内集成多种安全密码模块,包括 RSA/ECC DES/TDES、 SHA-1/-256、 AES-128/-192/-256 等国际安全算法,支持真随机数发…

Arcgis像元统计数据

目录 单幅影像统计多幅影像统计 单幅影像统计 现有一幅NDVI影像,如何知道影像中NDVI的分布情况呢? 先栅格转点,然后在属性表中查看汇总情况 还有一种方法就是在ENVI中打开, -0.3-0.338占据了99% 多幅影像统计 现有多幅NDVI影…

网络协议与攻击模拟_01winshark工具简介

一、TCP/IP协议簇 网络接口层(没有特定的协议) 物理层:PPPOE宽带拨号(应用场景:宽带拨号,运营商切网过来没有固定IP就需要拨号,家庭带宽一般都采用的是拨号方式)数据链路层网络层…

uniapp中组件库的Textarea 文本域的丰富使用方法

目录 #平台差异说明 #基本使用 #字数统计 #自动增高 #禁用状态 #下划线模式 #格式化处理 API #List Props #Methods #List Events 文本域此组件满足了可能出现的表单信息补充,编辑等实际逻辑的功能,内置了字数校验等 注意: 由于…

基于微信小程序的热院成都味道系统的设计与实现

互联网的普及彻底颠覆了人们的生活,一直以来人们都是通过到餐厅就餐来满足自己的口腹之欲,而在工作学习繁忙的时候只能通过方便食品来进行充饥。而外卖订餐的出现则为这些人群提供了一个兼顾美食与工作学习的解决方案,因此已经有越来越多的人…

全视通发表“物联网赋能智慧医院建设”主题演讲获关注

邕州山河,神州沃壤。近日,备受瞩目的“2024广西医院和实验室建设学术年会暨净化专业委员会成立六周年庆典”在广西南宁圆满召开。作为智慧医康养整体方案提供商,全视通受邀参会并发表了主题为“物联网赋能智慧医院建设”的演讲,深…

在macos上查看当前进程的栈信息

概述 在调试程序时,如cpu莫名的高或低,一个常用的方式就是打印当前进行的调用栈,然后确认各线程的执行函数是否有异常。 在linux系统中可以使用pstack命令,直接打印各线程的栈信息,可惜在macos上没有该命令。一种解决…

利用人工智能和机器人技术实现复杂的自动化任务!

这篇mylangrobot项目由neka-nat创建,本文已获得作者Shirokuma授权进行编辑和转载。 https://twitter.com/neka_nat GitHub-mylangrobot :GitHub - neka-nat/mylangrobot: Language instructions to mycobot using GPT-4V 引言 本项目创建了一个使用GPT-4…

MySQL运维实战(3.1) MySQL官方客户端使用介绍

作者:俊达 引言 MySQL是MySQL安装包默认的客户端,该客户端程序通常位于二进制安装包的bin目录中,或者通过rpm安装包安装mysql-community-client,是数据库管理系统的重要组成部分。MySQL客户端不仅仅是一个简单的软件工具&#x…

【数据库原理】(15)数据关系模式与规范

在数据库系统设计中,数据模式的设计是至关重要的。这涉及到如何将现实世界的复杂结构和关系有效地转化为适宜的数据模式。关系模式,得益于其坚实的数学理论基础,不仅能以二维表的形式清晰地表达实体,还能描述实体之间的相互关系&a…

使用STM32和MPU6050实现基于手势的室内导航系统

基于STM32和MPU6050的基于手势的室内导航系统是一个创新而具有挑战性的项目。在本文中,我们将介绍如何利用STM32微控制器和MPU6050传感器实现基于手势的室内导航系统,并提供相应的代码示例。 1. 系统概述 基于手势的室内导航系统旨在通过手势识别的方式…

使用Adobe Acrobat Pro DC给pdf文件填加水印

前言 GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。 如果调用官方的GPT4接口,就可以按使用量付费,用多少付多少,而且没有3个小时内只能提问50条的使用限制。 但是对很多人来说调用接口是比较麻烦…

自动驾驶轨迹预测

目录 神经网络轨迹预测综述: 比较新的轨迹预测网络 Uber:LaneRCNN[5] Google:VectorNet[6] Huawei:HOME[7] Waymo:TNT[8] Aptive:Covernet[9] NEC:R2P2[10] 商汤:TPNet[11]…

小H靶场笔记:DC-6

DC-6 January 6, 2024 12:06 PM Tags: nmap提权,WordPress Owner:只惠摸鱼 信息收集 apr-scan和nmap探测主机后,发现靶机ip:192.168.199.136,端口22和80开放 扫描端口服务、版本、操作系统、默认脚本扫描 扫描开…

Dora-rs 机器人框架学习教程(3)——利用yolo实现目标检测

文章目录 1 安装pytroch环境1.1 nvidia驱动1.2 安装cuda1.3 在conda中安装pytorch GPU版本1.4 检验pytroch是否安装正确 2 编写程序代码2.1 object_detection.py文件内容如下:2.2 dataflow.yml 文件内容如下: 3 运行参考资料 目标:在dora框架…