2024年测试工程师必看系列之Requests_模块_知识点总结

news2024/11/16 7:19:40

【文章末尾给大家留下大量的福利喔】

1,导入requests模块
==============================================================
get请求:
url = host = 'https://www.baidu.com/s'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'}
data = {'wd':'猫'}
response = requests.get(url=url,headers=headers,params=data,json=json,data=data)
print(response.content.decode("utf-8"))

get请求中的参数可以在URL中,也可以在字典中
===========================================================================
响应的解码方法有几种方式:
第一种方法:
response.encoding = "utf-8" # 类型:str 解码:自动根据响应头进行推测
print(response.text) # 直接text打印是乱码,因为text默认返回的是Unicode格式
第二种方法:
print(response.content.decode("utf-8")) # content是二进制模式,通过指定utf-8格式输出
第三种方法:
response.encoding = response.apparent_encoding # 解码:系统自动推测 如果不知道是什么编码格式,就使用这个方法
print(response.text)
获取基本信息:
print("状态码:",response.status_code)
print("请求URL:",response.url)
print("头部信息:",response.headers)
print("cookie信息:",response.cookies)
==========================================================================
post请求:
tag_url = 'https://api.weixin.qq.com/cgi-bin/tags/create'
tag_data = {'access_token':token}
tag_json_body = {"tag":{"name" :"长沙002"} }
headers = {"content-type":"application/json"} # 发送json 数据必须带有头部信息 content-type
response = requests.post(url=tag_url,params=tag_data,headers=headers,data=json.dumps(tag_json_body))
print(response.content.decode("utf-8"))

发送post请求的基础知识 dumps和loads
str1 = json.dumps(str_dict) # json.dumps 是把字典、json对象转成字符串
str_json = json.loads(str2) # json.loads 是把字符串转成json对象

注:response一般返回的数据都为字符串格式 /
也可通过json_obj=response.json()的方式转成json格式,可以通过json_obj["key"]提取json中key的值
# 发送json 数据必须带有头部信息 content-type :headers = {"content-type":"application/json"}
=====================================================================

 自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

2,导入json模块:
通过json把数据转成字符串或者json对象
1,json.dumps 是把字典、json对象转换为字符串
2,json.loads 是将字符串转成字典,json对象
=====================================================================
3,上传文件:
wx_url = "https://api.weixin.qq.com/cgi-bin/media/upload"
wx_data = {"access_token":token,"type":"image"}
file = {"files":open("E:/12345678.png","rb")} # 注意:必须要用字典的方式open
res = requests.post(url=wx_url,params=wx_data,files=file)
print(res.content.decode("utf-8"))
========================================================================
4,设置代理
# 设置代理,多用于爬虫
proxies = {"http":"http://12.34.56.79:9527",
"https":"https://12.34.56.79:9527"}
# 1,普通的代理
# res = requests.get(url="http://www.hnxmxit.com",proxies=proxies)
# print(res.content.decode("utf-8"))

# 2,携带了登录的用户名和密码
proxies = {"http":"http://用户名:密码@12.34.56.79:9527"}
res = requests.get(url="http://hmxmxit.com",proxies=proxies)
print(res.content.decode("utf-8"))

========================================================================
5,连接超时
# 2,链接超时,接收超时
print(time.time())
res = requests.get(url="http://www.hnxmxit.com",timeout=(0.01,2)) # 以秒为单位(连接,接收)
print(time.time())

==========================================================================
6,重定向
res = requests.get(url="http://www.360buy.com",allow_redirects=False) # 设置重定向开关
print(res.history) # 查看重定向历史
print(res.url)
==========================================================================
7,添加cookie
1,可以在参数中添加cookie
2,在header中添加cookie
# 1,在参数中添加
# cookie_dict = {"login_name":"admin"}
# res = requests.get(url="http://www.hnxmxit.com",cookies=cookie_dict)
# 2,在头部添加
cookie_header = {"login_name":"root"}
res = requests.get(url="http://www.hnxmxit.com",headers=cookie_header)
==========================================================================
8,关闭证书:
# 关闭警告
# requests.packages.urllib3.disable_warnings()
# warnings.filterwarnings("ignore")
# 1,关闭证书
# res = requests.get(url="https://www.12306.cn",verify=False)
# print(res.content.decode("utf-8"))
# 2,安装pyopenssl模块 可以验证证书,可以在请求中不加 verify=False
res = requests.get(url="https://www.12306.cn")
print(res.content.decode("utf-8"))
# 3,加上证书,找公司开发人员要 .crt文件 推荐这种
res = requests.get(url="https://www.12306.cn",cert=("/路径/证书.crt","/路径/key"))
==============================================================================
9,请求异常处理
ReadTimeout (加载超时)
ConnectionError(链接超时)
RequestException (request错误)
导入包
import requests
from requests.exceptions import ReadTimeout,ConnectionError,RequestException
try:
res = requests.get(url="http://www.hnxmxit.com",timeout=(0.01,1))
print(res.status_code)
except ReadTimeout as e:
print("加载超时")
print(e)
except ConnectionError:
print("链接超时")
except RequestException as e:
print(e)
=============================================================================
10,re模块
# 写法1:用re的函数进行匹配,会取第一个
str1 = "python3helloworldpython4"
value = re.search("python\d",str1).group()
print(value)

# 写法2:用正则表达式对象
reg_obj = re.compile("python\d") # 创建正则对象
value2 = reg_obj.search(str1).group()
print(value2)

title_str = "<title>000</title>"
reg_obj2 = re.compile("t+")
value3 = reg_obj2.findall(title_str)[0] # findall 返回的是一个列表
print(value3)

value4 = re.findall("<title>(.+?)</title>",title_str)[0]
print(value4)
=======================================================================


=======================================================================
11,设置 session 会话保持连接
session_obj=requests.session() # 用来保持会话连接,后面的请求都用session对象来发送
# session添加cookie
# 方法2: 推荐使用
# session_obj.cookies.set("test_add_cookie","newdream")
# response = session_obj.get(url="http://www.hnxmxit.com")

13,添加cookie绕过登录phpwind论坛
# 1.手动打开论坛获取登录后的cookie (在F12下找Application的cookies)
# 2.添加cookie
session_obj = requests.session()
session_obj.cookies.set("zFb_lastvisit","142%091621076949",domain="47.107.178.45",path="/")
session_obj.cookies.set("zFb_winduser","WNirQHIeouFINxWV",domain="47.107.178.45",path="/")
=================================================================================
12,封装get/post请求,封装测试类
class run_test:
def __init__(self)
def send_get()
def send_post()

 总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

Java --- JVM之垃圾回收相关知识概念

目录 一、System.gc() 二、内存溢出与内存泄漏 2.1、内存溢出 2.2、内存泄漏 三、Stop the world 四、垃圾回收的并行与并发 4.1、并发 4.2、并行 4.3、并行 vs 并发 4.4、垃圾回收的并发与并行 五、安全点与安全区域 5.1、安全点 5.2、安全区域 六、引用 6.1…

开发上门洗衣洗鞋小程序都需要考虑哪些经营场景

互联网的高速发展让很多行业都转变了传统的服务模式&#xff0c;很多需要到店的服务都提供了上门的服务方式&#xff0c;洗护行业也是如此&#xff0c;越来越多的城市都开始流行上门洗衣洗鞋&#xff0c;要做上门的服务模式的话&#xff0c;就需要有一个小程序为载体&#xff0…

点击这里,获取数据治理加速器!

数据管理员&#xff1a;又双叒叕…盘一遍数据&#xff0c;这种工作究竟还要重复多少次&#xff1f;&#xff01; • 上上个月&#xff0c;发现数据有些问题&#xff0c;我把数据盘了一遍&#xff0c;梳理完数据的关联表才定位到问题&#xff1b; • 上个月&#xff0c;进行数据…

redis之高可用

&#xff08;一&#xff09;redis之高可用 1、在集群当中有一个非常重要的指标&#xff0c;提供正常服务的时间的百分比&#xff08;365天&#xff09;99.9% 2、redis的高可用的含义更加广泛&#xff0c;正常服务是指标之一&#xff0c;数据容量的扩展、数据的安全性 3、在r…

ueditor整合到thinkPHP里

<?phpnamespace app\ueditor\controller;use think\Controller;class Ueditor extends Controller {//首页public function upload(){//header(Access-Control-Allow-Origin: http://www.baidu.com); //设置http://www.baidu.com允许跨域访问//header(Access-Control-Allow…

2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…

使用JMX监控ZooKeeper和Kafka

JVM 默认会通过 JMX 的方式暴露基础指标,很多中间件也会通过 JMX 的方式暴露业务指标,比如 Kafka、Zookeeper、ActiveMQ、Cassandra、Spark、Tomcat、Flink 等等。掌握了 JMX 监控方式,就掌握了一批程序的监控方式。本节介绍 JMX-Exporter 的使用,利用 JMX-Exporter 把 JMX…

ODBC配置数据源及相关问题(“找不到工程和库”“实时错误91对象变量或with块变量未设置”等)

目录 背景遇到的问题及解决步骤1、找不到工程和库问题分析问题解决 2、 实时错误91&#xff0c;对象变量或with块变量未设置问题分析问题解决 3、文件dsn配置问题什么是dsn文件&#xff0c;内容是什么&#xff0c;作用是什么ODBC配置dsn文件配置文件dsn默认路径ODBC 32位和64位…

股票统计信息(七)

7-统计信息 文章目录 7-统计信息一. 股票周级别统计信息二. 查询可支持的所有的股票资金类型三. 股票图形统计信息四. 查询当前用户自选表里面最近十天的交易信息五. 查看天/星期范围统计的历史记录六. 查看最近多少天某个属性的涨跌幅度值 一. 股票周级别统计信息 接口描述: …

【Spring】使用xml配置AOP

文章目录 1.前言2.xml配置AOP3. 总结 1.前言 在之前的学习中,都是使用注解的方式进行AOP的配置.其实使用xml配置文件也可以配置AOP. 2.xml配置AOP xml配置AOP方法如下: 添加相关依赖 <dependencies><dependency><groupId>org.springframework</groupId…

数学建模之插值法及代码

发现更多知识&#xff0c;欢迎访问Cr不是铬的个人网站 引言 数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模…

www.testfire.nets渗透测试报告

www.testfire.nets渗透测试报告 一、测试综述 1.1.测试⽬的 通过实施针对性的渗透测试&#xff0c;发现testfire.net⽹站的安全漏洞&#xff0c;锻炼自己的渗透水平 1.2.测试范围 域名&#xff1a;www.testfire.net IP:65.61.137.117 测试时间&#xff1a; 2023年11月…

Go 语言中 For 循环:语法、使用方法和实例教程

for循环用于多次执行特定的代码块&#xff0c;每次都可以使用不同的值。每次循环执行都称为一次迭代。for循环可以包含最多三个语句&#xff1a; 语法 for 语句1; 语句2; 语句3 {// 每次迭代要执行的代码 }语句1&#xff1a;初始化循环计数器的值。语句2&#xff1a;对每次循环…

第十九章Java绘图

9.1.1——Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制&#xff0c;Graphics类封装了Java支持的基本绘图操作所需要的状态信息&#xff0c;主要包括颜色&#xff0c;字体&#xff0c;画笔&#xff0c;文本&#xf…

composer切换全局镜像源的方法

composer 默认配置中的镜像地址为国外的&#xff0c;在下载一些依赖包的时候会感觉很慢。当然国内也有很多composer镜像地址的&#xff0c;比如阿里云&#xff0c;腾讯云等。下面的博文73so博客就和大家说说&#xff0c;如何将composer的默认镜像改为国内镜像源的方法。 compo…

Java-认识String类

本章重点&#xff1a; 1. 认识 String 类 2. 了解 String 类的基本用法 3. 熟练掌握 String 类的常见操作 4. 认识字符串常量池 5. 认识 StringBuffer 和 StringBuilder 1.String类的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组…

Selenium自动化测试详解

最近也有很多人私下问我&#xff0c;selenium学习难吗&#xff0c;基础入门的学习内容很多是3以前的版本资料&#xff0c;对于有基础的人来说&#xff0c;3到4的差别虽然有&#xff0c;但是不足以影响自己&#xff0c;但是对于没有学过的人来说&#xff0c;通过资料再到自己写的…

C++初阶--类型模板

文章目录 泛型编程函数模板使用通用加法函数多模板参数必须用实例化 函数模板的原理类模板使用 注意事项 泛型编程 先看一个例子&#xff1a; 这是一些对于Swap重载的函数&#xff0c;区别是类型不同&#xff1b; 虽然能够重载使用&#xff0c;但代码复用率比较低&#xff0c…

技术分享| anyRTC之RTN网络

RTN(Real-time Network)中文名&#xff1a;实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络&#xff0c;RTN是对音视频的实时性又强烈要求的场景而设计的&#xff0c;原理上全球端到端的时延通过RTN网络…