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

一、通过代码,实现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, "两者不等于的报错提示"

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

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

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

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

相关文章

Windows Server 2022 环境下WEB和DNS服务器配置方法

目录 实验名称:WEB和DNS服务器配置实验目的实验原理:主要设备、器材:实验内容:配置本地WEB站点配置本地DNS服务器 实验名称:WEB和DNS服务器配置 实验目的 掌握 Windows Server 2022 环境下WEB服务器配置方法 掌握 Wi…

RT Thread + CLion环境搭建

RT Thread CLion环境搭建 0.前言一、准备工具1. Env RT Thread v5.12.CLion安装3.编译及下载工具 二、新建Env工程三、CLion配置四、运行测试 0.前言 事情的起因是最近在使用RT Thread Studio时,发现默认的 rtt 内核版本及交叉编译链版本都过于陈旧,于…

【科研】常用的实验结果评价指标(2) —— MAE 是什么? !

了解MAE 提示:先说概念,后续再陆续上代码 文章目录 了解MAE前言一、MAE 基本概念1. MAE 是什么?2. MAE 的起源3. MAE 的计算公式 二、MAE的适用场景是什么?三、MAE 的劣势,或 不适用于那些场景或者数据?四、…

2024成都现代职业教育及装备展6月1日举办 免费参观

2024成都现代职业教育及装备展6月1日举办 免费参观 同期举办:中国西部职业教育产教融合高峰论坛 主办单位: 中国西部教体融合博览会组委会 承办单位:重庆港华展览有限公司 博览会主题:责任教育 职教兴邦 组委会:…

ssti学习(1)

一、成因: 渲染模板时,没有严格控制对用户的输入。(使用了危险的模板,导致用户可以和flask程序进行交互) flask是一种基于web开发的web服务器,如果用户可以和flask交互,则可以执行eval、syste…

嵌入式学习-通用定时器

简介 框图介绍 时钟选择 计数器部分 输入捕获和输出比较框图 嵌入式学习全文参考(小向是个der)做笔记:https://blog.csdn.net/qq_41954556/article/details/129735708

Runes 生态一周要览 ▣ 2024.5.06-5.12

1、香港「Runes Asia 2024」符文峰会之行圆满结束。 2、BEVM 宣布首次大规模 RUNES 空投现已结束!符文桥即将上线。 3、来自 Book of Blob 的交互式视听信息铭刻了第一个 Epic Sat 在 coinex 上市交易。 4、 Binance Research 发布了对 Runes 的报告。 5、HOPE•…

re--SMC

参考:http://t.csdnimg.cn/g7fUY 参考:http://t.csdnimg.cn/qi3q5 简介 SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代…

嵌入式Linux:编译和使用Protobuf库

目录 1、开发环境和工具 2、安装和编译Protobuf、Protobuf-C库 3、编写和编译proto文件 4、修改makefile文件 5、测试示例 6、参考资料 Protobuf(Protocol Buffers)是由 Google 开发的一种轻量级、高效的结构化数据序列化方式,用于在不同应用…

SSM【Spring SpringMVC Mybatis】——Mybatis(二)

如果对一些基础理论感兴趣可以看这一期👇 SSM【Spring SpringMVC Mybatis】——Mybatis 目录 1、Mybatis中参数传递问题 1.1 单个普通参数 1.2 多个普通参数 1.3 命名参数 1.4 POJO参数 1.5 Map参数 1.6 Collection|List|Array等参数 2、Mybatis参数传递【#与…

单区域OSPF实验

实验目的: 理解OSPF的基本概念。掌握单曲于OSPF的配置掌握OSPF邻居状态的解读掌握通过Cost控制OSPF选路的方法掌握OSPF认证的配置方法 一、基础配置: 搭建实验拓扑图; 配置路由器接口的IP地址以及配置环回地址待后续使用 (1&a…

webjars学习

webjars介绍 官网:WebJars - Web Libraries in Jars github: WebJars GitHub 文档:WebJars - Documentation WebJAR 是一个用于管理Web前端依赖的工具。它允许开发者将特定的客户端库(如JavaScript、CSS等)打包成JAR&#xf…

STL----push,insert,empalce

push_back和emplace_back的区别 #include <iostream> #include <vector>using namespace std; class testDemo { public:testDemo(int n) :num(n) {cout << "构造函数" << endl;}testDemo(const testDemo& other) :num(other.num) {cou…

python的标准数据类型

四、标准数据类型 1、为什么编程语言中要有类型 类型有以下几个重要角色&#xff1a; 对机器而言&#xff0c;类型描述了内存中的电荷是怎么解释的。 对编译器或者解释器而言&#xff0c;类型可以协助确保上面那些电荷、字节在程序的运行中始终如一地被理解。 对程序员而言…

来个大揭秘,有趣的ZIP压缩文件伪加密(附自制演示工具)

网管小贾 / sysadm.cc “太公……太……哎哟……” 员外刚一个转身&#xff0c;与家仆高才撞了个满怀。 员外用手点指&#xff1a;“你你你……你这小厮&#xff0c;跌跌撞撞&#xff0c;成何体统&#xff01;” 高才坐在地上喘气笑脸道&#xff1a;“恭……恭喜……太……太…

使用Pyramid、Mako和PyJade生成 HTML

Pyramid 是一个流行的 Python Web 框架&#xff0c;而 Mako 和 PyJade 是用于模板引擎的工具&#xff0c;它们可以与 Pyramid 配合使用来生成 HTML 内容。但是在实际使用中还是有些差别的&#xff0c;尤其会遇到各种各样的问题&#xff0c;下面我将利用我所学的知识一一为大家解…

03 Linux编程-进程

1、进程的相关概念 1.1 程序与进程 程序是静态的概念&#xff0c;进程是程序的一次运行活动。 1.2 查看系统中有哪些进程 ps #只显示一小部分进程 ps -aux #会打印当前所有进程 ps -aux|grep init #使用grep筛选出只含有init的进程top #运行显示的进程有点类似windows…

张驰咨询:AI与六西格玛——携手共进,非彼此替代

在历史的洪流中&#xff0c;技术与方法的演进如同波澜壮阔的画卷&#xff0c;不断书写着人类文明的篇章。六西格玛&#xff0c;作为一种追求极致品质与效率的方法论&#xff0c;是现代工业文明中的瑰宝。而当我们面对AI&#xff08;人工智能&#xff09;这一新时代的产物时&…

在阿里云服务器上安装MySQL

目录 一、先卸载不需要的环境 1.关闭MySQL服务 2.查看安装包以及卸载安装包 3.依次卸载所有包 4. 获取mysql官⽅yum源 二、安装&#xff08;密钥过期解决方法&#xff09; 三、启动并进入 关于MySQL MySQL是一个广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&…

通过windows远程桌面,远程连接CentOS系统

1.配置阿里云的YUM仓库 1.1 备份当前的YUM仓库配置文件 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2 下载阿里云的CentOS仓库配置文件 对于CentOS 7&#xff1a; sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirr…