【接口测试_03课_-接口自动化思维梳理及Requests库应用】

news2025/1/17 21:35:37

一、通过代码,实现Jmeter

1、项目要放在虚拟环境里面,解释器要使用虚拟环境的

上面是虚拟环境,下面是系统环境。2选一

venv目录

 

 查看当前虚拟环境已存在的依赖包

2、安装Requests依赖包 

1)安装命令

pip install requests

 

如果是mac电脑需要注意,python2是使用pip命令。python3 是使用 pip3 命令

2) 安装完之后,查看安装的版本

pip show requests

或者使用 pip list 去看,但是如果包太多,list内容就太多了 

3)requests对应的方法有13个参数 

接口响应码及对应的含义:

3:重定向
2:成功
1:响应正确
4:客户端问题
5:服务器问题

 

3、编写代码

注意:

Requests 是用Python语言编写HTTP库,专门用于发于请求的库

注意:
params 一般就是拼接在url当中(问号后面的参数)
Requests对应的方法中,有13参数。
http请求和https请求没有什么区别,只是https多了SSL证书,如果你们证书验证不通过,你们可以尝试把 verity= False

1、get请求

获取对应的响应数据
获取对应的响应数据:res.方法


# 1. 获取对应的请求URL
# print(res.url)

# 2. 获取对应响应数据---并且以文本信息显示
# print(res.text)

# 3. 获取对应响应数据---并且以JSON格式显示,如果你的数据非Json格式则会报错
# print(res.json())  # 用案例三可以看到效果

# 4. 获取对应响应数据---并且以字节方式显示,会自动为你解码 gzip 和 deflate 压缩
# print(res.content)

# 5. 获取响应的状态码
# print(res.status_code)

# 6. 获取对应的响应头 ,数据显示是什么格式由:'Content-Type': 'text/html; 决定
# print(res.headers)
 获取对应的请求数据
# 获取对应的请求数据:res.request.方法


# 1、对应的请求方法
# print(res.request.method)

# 2、对应的请求的url
# print(res.request.url)

# 3、对应的请求的头部
# print(res.request.headers)
1)以文本打印的方式,将请求的文本信息打印出来
import requests

urldata = "http://shop-xo.hctestedu.com/"

r = requests.get(urldata)   # 直接传urldata (位置传参)

# 获取对象的文本信息
print(r.text)

运行结果 

2) Params,请求的参数是拼接在问好后面

下面get里面的两个url不同。前一个紫色的是 get请求的参数,后面的黑色的,是请求地址的变量

3)查看请求的url ,params参数直接拼接在URL里面
# params  参数应用,直接拼在链接里面

urldata = "https://www.baidu.com/s?wd=hello"

r = requests.get(urldata)

#打印请求的url
print(r.url)

4) 查看请求的url ,params参数不拼接在URL里面,而是使用公共参数
# # params  参数应用,通过变量方式使用

urldata = "https://www.baidu.com/s"

paramsdata = {"wd": "hello11"}

r = requests.get(url=urldata,params=paramsdata)

print(r.url)

 2、post请求

1)普通的表单提交
import requests

# 案例 : 登录案例
# 分析: 四要素 :请求url 请求方法(POST) 请求数据 响应数据

# requests默认的post请求数据方式是:'Content-Type': 'application/x-www-form-urlencoded'

url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "xxx", "pwd": "xxx", "type": "username"}

res = requests.post(url=url, params=public_data, data=data)

# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)

# 2. 获取对应的文本信息
# print(res.text)

# 3. 获取请求头
print(res.request.headers)

结果 

2) Json表单的提交:
方法一:json提交数据直接
# 方法一:json提交数据直接:json = 请求数据
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}

res = requests.post(url=url, params=public_data, json=data)

# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)
# # 2. 获取对应的文本信息
# print(res.text)
# # 3. 获取请求头
# print(res.request.headers)

 

方法二:设置请求头为json格式

(字典是数据类型,JSON是数据格式.字典不是JSON类型)

# 方法二:设置请求头为json格式
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}

#下面是自己手写header
header = {'Content-Type': 'application/json; charset=utf-8'}

#  data在这个位置,它只是一个字典(字典是数据类型,JSON是数据格式.字典不是JSON类型),而我们需要进行处理变成字符串格式。
data = {"accounts": "hami", "pwd": "123456", "type": "username"}

#  下面转化为JSON,是将 dict 转换为 string
new_data = json.dumps(data)

res = requests.post(url=url, params=public_data, headers=header, data=new_data)

# ----------------------------------------
# # 1. 获取对应的请求URL
# print(res.url)
# # 2. 获取对应的文本信息
# print(res.text)
# # 3. 获取请求头
# print(res.request.headers)

 

3)上传图片
3.1)上传图片,需要使用一个轻量级的WEB框架,Flask,创建了一个应用程序,去保存图片文件。
pip install flask

下面这部分代码相当于服务端,处理图片上传和存储逻辑 

3.2)上传文件

下面的代码,相当于前端,去上传图片

import requests

# 分析: 四要素 :请求url 请求方法(POST) 请求数据 响应数据

#这个是老师自己写的一个上传图片的接口,服务器不一定还能再用了
url = "http://127.0.0.1:5000/upload"
data = {"image": open("20240223220740.png", "rb")}

res = requests.post(url=url, files=data)


# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)
# 2. 获取对应的文本信息
# print(res.text)  # unicode编码
print(res.json())
# 3. 获取响应头
print(res.headers)
# 4. 获取请求头
print(res.request.headers)

 面试点

接口请求的时候,如何一直保持会话:

# 总结:如果说工作当中有需要保持会话,不能直接用requests去发送请求
# 需要实例化一个session的请求对象,发送请求(在这一个会话里面,后续其他请求都用session对象进行发送即可)



# 面试题: session\token\cookies\签名 区别:
token是请求参数
cookie 、session是保持会话

# 核心点:都是用来鉴权 (一般用哪种,这个不一定,看开发)
# 1. token 一般就是一个请求参数,放在请求头 (时效性\也有可能是其它名字)。开发用算法生成的
# 2. 存储位置不同 :cookie存储在客户端,session存储在服务器端。
# 3. 大小限制不同 :cookie有大小限制,而session没有大小限制。
# 4. 安全隐患不同 :cookie存在安全隐患,通过拦截或本地文件找得到存储在其中的信息。
# 5. 时效性不同 :cookie有到期时间,而session只在用户关闭浏览器时消失。

3、接口断言

# 断言:期望结果和实际结果进行对比

# assert 表达式,信息

# 如果说正确的话不会有什么提示,错误的话,会有异常信息


assert 1 == 1, "因为是正确的,所以这行提示不会打印"

assert 1 == 2, "两者不等于的报错提示"

断言成功--不会打印断言提示
 断言失败--才会打印断言提示

绿色的是断言的值,蓝色的才是提示信息

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

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

相关文章

python输出希腊字母

有时候在绘制一些函数图像时,需要坐标轴和图例显示希腊字母 plt.xlabel(r’ ϵ \epsilon ϵ’)

AI绘画Stable Diffusion 模型辅助神器之 Lora 提示词助手

大家好,我是向阳 小伙伴们也知道,大多数的 Lora 模型都是有触发词的,而且每个模型的触发词都不一样。 模型少的时候还行,模型多起来了,还得一个一个去翻以前的笔记,真的挺麻烦。要是漏了没记,…

GPT-4o正式发布;零一万物发布千亿参数模型;英国推出AI评估平台

OpenAI 正式发布 GPT-4o 今天凌晨,OpenAI 正式发布 GPT-4o,其中的「o」代表「omni」(即全面、全能的意思),这个模型同时具备文本、图片、视频和语音方面的能力,甚至就是 GPT-5 的一个未完成版。 并且&…

emp.dll文件丢失荒野大镖客,怎么快速修复emp.dll

缺失或损坏的 DLL 文件是会导致系统或软件故障的,DLL(动态链接库)文件是 Windows 操作系统中至关重要的一部分,它们允许多个程序共享代码和资源,从而减少内存占用和增强系统性能。然而,当EMP.dll文件丢失或…

JAVA中类和对象(承接上次的补充)

目录: 一.static修饰成员方法 二.static成员变量初始化 三.代码块 一.static修饰成员方法: 1.一般类中的数据成员都设置为 private ,而成员方法设置为 public , 问:那设置之后,Student类中,被Student修饰…

食家巷传统面点积极响应中国品牌日,打造国货潮牌

2024 年中国品牌日活动以“中国品牌,世界共享;国货潮牌,品筑未来”为主题,旨在推动中国品牌的发展和国际化,展示国货潮牌的魅力和创新。食家巷传统面点品牌积极响应活动号召,以实际行动助力中国品牌的崛起。…

Databend 开源周报第 144 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 了解 Databend …

2024精美UI小程序打印系统源码 PHP后端 附搭建教程+功能脑图

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 后端安装说明: 测试环境:NginxPHP7.4MySQL5.6 PHP安装扩展:sg11 网站运行目录设置为:/public 网站伪静态规则设置为:think…

计算机网络复习-应用层

概述 传输层以及以下的层提供完整的通信服务,不需要管传输,只需要往上对接用户即可。应用层是面向用户的一层 定义应用间通信的规则 应用进程的报文类型 (请求报文、应答报文)报文的语法、格式应用进程发送数据的时机、规则 DNS详解 DNS&#xff1a…

数据结构与算法-排序算法2-选择排序

目录 1.选择排序: 1.介绍: 2.动态图解 3.举例 4.小结选择排序规则 5.选择排序代码 6.运行时间 代码: 运行结果: 1.排序算法简介 排序也称为排序算法。排序是将一组数据依据指定的顺序进行排列的过程。 2.常见的排序算法…

Building3D An Urban-Scale Dataset and Benchmarks 论文阅读

文章主页 Building3D 任务 提出了一个城市规模的数据集,由超过 16 万座建筑物以及相应的点云、网格和线框模型组成,覆盖爱沙尼亚的 16 个城市,面积约 998 平方公里。 动机 现有的3D建模数据集主要集中在家具或汽车等常见物体上。缺乏建…

网络安全快速入门(十)MySQL拓展操作

10.1.0前言 前面我们已经对用户操作以及库,表操作有了基础的认识,接下来我们来在之前已经学过的一些操作进行进一步拓展,本章我们主要了解以下几个知识点: 数据库设计方法视图存储过程事务 我们开始本章的内容吧 10.2 数据库设计方…

string类篇超超超详解,40余个成员函数详细解释(图文)!看完包会!!

本篇目标 constructoroperatorElements accessIteratorsCapacityModifiersString operationsmember contants其他函数 一、constructor(对象的创建) void StrTest1() {string s1;//直接构造cout << s1 << endl;//string里内置了流插入、流提取的函数重载&#xf…

C# 在Excel中添加筛选器并执行筛选 (日期筛选、文本筛选、数字筛选)

自动筛选器是 Excel 中的一个基本但极其有用的功能&#xff0c;它可以让你根据特定的条件来自动隐藏和显示你的数据。当有大量的数据需要处理时&#xff0c;这个功能可以帮你快速找到你需要的信息&#xff0c;从未更加有效地分析和处理相关数据。 下面将介绍如何使用免费.NET …

depcheck检查项目中未被使用的依赖

depcheck是一个用于分析项目中依赖项的工具&#xff0c;可以查看&#xff1a;每个依赖项是如何使用的&#xff0c;哪些依赖项是无用的&#xff0c;以及哪些依赖项在package.json 1、安装 npm install -g depcheck # 必须全局安装2、可配置文件.depcheckrc&#xff08;不配置 直…

SCP收容物171~180

注 &#xff1a;此文接SCP收容物161~170,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-171 scp-172 scp-173 scp-174 scp-175 …

第五十八节 Java设计模式 - 适配器模式

Java设计模式 - 适配器模式 我们在现实生活中使用适配器很多。例如&#xff0c;我们使用存储卡适配器连接存储卡和计算机&#xff0c;因为计算机仅支持一种类型的存储卡&#xff0c;并且我们的卡与计算机不兼容。 适配器是两个不兼容实体之间的转换器。适配器模式是一种结构模…

MySQL用SQL取三列中最大的数据值

1、有如下数据&#xff1a; ABC000097.0600330.72330.720069.650027.8827.85086.92086.92219.42219.4219.41 需要展示为如下形式&#xff1a; ABC结果列0000097.06097.060330.72330.72330.7200669.65009.6527.8827.85027.8886.92086.9286.92219.42219.4219.41219.42 解决办…

OpenText ETX 助力 SMS 集团提高生产力、降低成本并实现全球协作

OpenText ETX 助力 SMS 集团提高生产力、降低成本并实现全球协作 SMS 集团存在的挑战 需要一个可以在全球范围内轻松访问的解决方案&#xff1b;需要一个系统&#xff0c;能够无缝运行图形要求苛刻的基于服务器的应用程序&#xff1b; 结果 1、通过全球用户访问数据&#x…

x264 帧类型代价计算原理:slicetype_slice_cost 函数分析

x264 x264 是一个开源的视频编码库,它实现了H.264/AVC标准。H.264是一种广泛使用的压缩标准,用于视频流、视频下载、蓝光光盘以及许多其他形式的数字视频分发。x264 以其高压缩效率和良好的视频质量而著称,是许多视频编辑软件和视频播放器的默认编解码器。 以下是关于 x26…