【接口测试_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 requestsurldata = "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.mzph.cn/web/12042.shtml

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

相关文章

防火墙技术的演进,什么是下一代防火墙(NGFW)?

防火墙技术的演进 防火墙技术的演进经历了不同阶段,从包过滤防火墙到状态检测防火墙,再到集成多种安全功能的UTM(统一威胁管理)设备,最终发展到具备应用识别能力的NGFW(下一代防火墙)。 包过滤…

DTAS 尺寸公差分析及尺寸链计算-建模神器 — 用户DIY装配

工业互联网(工业4.0) 是未来智能制造的核心,工业软件是智能制造的灵魂。 相关工业软件及系统的自主研发是智能制造和质量升级转型亟需解决的卡脖子环节,而公差分析软件系统是前期质量研发精准设计、降本增效的关键。 数字化时代&#xff0…

知了汇智副总经理赵懋骏出席“走进阿里”CEO联席会,共话AI大模型新趋势

在智能科技日新月异的今天,汇智知了堂副总经理赵懋骏于3月28日受邀出席了在天府软件园举行的“走进阿里–2024年CEO联席会”,会议聚焦阿里云AI技术的最新进展与行业应用,特别是“AI技术正在加速变革:大模型的历史、现在与趋势”&a…

手撕C语言题典——环形链表的约瑟夫问题

目录 前言 一.故事背景 二.题目 ​编辑三.思路 1)数组 ​编辑2) 循环链表 四.代码实现 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的基本操作-CSDN博客 前面学了单链表的相关知识,我们来尝试做一下关于…

灌区信息化管理平台系统包含哪些内容?(全面介绍)

政策背景 2022年12月29日,水利部启动48处大中型灌区开展数字孪生灌区先行先试建设。 2023年2月24日,《2023年农村水利水电工作要点》:2023年农村水利水电工作的总体思路包括:紧盯保障国家粮食安全,加快推进大中型灌区现代化改造,…

bmi088-linux驱动(I2C)

电气特性: 在正常工作时,gyro 工作电流为5mA,acc 工作电流为150uA。 SPI 时钟和数据电平范围 0 -3.6 结构框图如下: 硬件连接图如下: note: 1. 通过PS引脚选择通讯协议,上拉引脚则选择的是I2C…

系统定期执行命令的方法

系统定期执行命令的方法 一、进入超级用户下 执行命令:sudo su 二、添加要执行的命令 例子:每天0点执行一次myapp.sh命令 先后输入:crontab -e、 1、 回车 设置每天0点执行一次myapp.sh操作,需要写绝对路径 含义&#xff1…

离线修复.dll,Microsoft Visual C++

在安装mysql时遇到下面的问题,如果是有网络的情况下微软管网下载安装就行了,用的服务器不允许连接互联网。 后面经过寻找,找到了一个修复工具,可一次修复所有的问题,特别好用分享给宝子们。 下载链接:http…

树莓派 4B putty远程连接登录显示拒绝访问,密码修改

putty显示拒绝访问 可能是树莓派的ip没有找到正确的 在下载系统镜像的时候,会提示设置wifi 这里设置的WiFi和密码需记住,主机名也需记住 可以在手机打开热点(将热点的账号和密码改为跟你设置的wifi一样的) 可以在手机后台查看…

微信小程序支付教程

微信小程序支付教程 Person: 微信小程序支付有几种版本,分别是什么,写一个详细教程介绍下 ChatGPT: 微信小程序支付主要有两种版本,分别为:JSSDK版本(v1.0)和WeixinJSBridge版本&…

Linux —— 线程控制

Linux —— 线程控制 创建多个线程线程的优缺点优点缺点 pthread_self进程和线程的关系pthread_exit 线程等待pthread_ join线程的返回值线程分离pthread_detach 线程取消pthread_cancel pthread_t 的理解 我们今天接着来学习线程: 创建多个线程 我们可以结合以前…

【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(c语言实现)

实验要求 求n的因子函数 我们将n的因子存入数组中&#xff0c;n的因子就是可以整除n的数&#xff0c;所以我们通过一个for循环来求。返回因子个数。 //求n的因子,返回因子个数 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…

C++反向迭代器

C反向迭代器 反向迭代器是用正向迭代器适配实现的&#xff0c;本质是写一个反向迭代器的类模板&#xff0c;给编译器传不同的容器的正向迭代器实例化&#xff0c;编译器去实例化出各种类模板对应的反向迭代器。 #pragma once namespace my_reverse_iterator {template<cla…

关于使用git拉取gitlab仓库的步骤(解决公钥问题和pytho版本和repo版本不对应的问题)

先获取权限&#xff0c;提交ssh-key 虚拟机连接 GitLab并提交代码_gitlab提交mr-CSDN博客 配置完成上诉步骤之后&#xff0c;执行下列指令进行拉去仓库的内容 sudo apt install repo export PATHpwd/.repo/repo:$PATH python3 "实际路径"/repo init -u ssh://gitxx…

Java的类和对象(一)—— 初始类和对象,this关键字,构造方法

前言 从这篇文章开始&#xff0c;我们就进入到了JavaSE的核心部分。这篇文章是Java类和对象的第一篇&#xff0c;主要介绍类和对象的概念&#xff0c;this关键字以及构造方法~~ 什么是类&#xff1f;什么是对象&#xff1f; 学过C语言的老铁们&#xff0c;可以类比struct自定义…

spark结课之tip2

spark常用方法总结&#xff1a; 一、从内部创建RDD (1).通过并行化集合&#xff08;Parallelized Collections&#xff09;&#xff1a; 可以使用SparkContext的parallelize方法将一个已有的集合转换为RDD。 基本语法&#xff1a; parallelize(collection, numSlicesNone)…

AI系列:大语言模型的RAG(检索增强生成)技术(下)-- 使用LlamaIndex

目录 前言什么是LlamaIndex?LlamaIndex代码设置embedding模型设置LLM模型索引查询机 验证使用感受参考资料 前言 继上一篇文章AI系列&#xff1a;大语言模型的RAG&#xff08;检索增强生成&#xff09;技术&#xff08;上&#xff09;&#xff0c;这篇文章主要以LlamaIndex为…

银行业数据运营场景下的数据埋点方案

1、引言 随着金融科技的快速发展&#xff0c;银行业的数据运营变得日益重要。数据埋点作为数据收集的重要手段&#xff0c;对于银行业务的精细化运营、风险管理和产品迭代等方面起着至关重要的作用。本方案将针对银行业数据运营场景&#xff0c;设计一套完整的数据埋点方案&am…

【生信技能树】GEO数据挖掘全流程

R包的安装&#xff0c;每次做分析的时候先运行这段代码把R包都安装好了&#xff0c;这段代码不需要任何改动&#xff0c;每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…