热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python接口自动化之使用requests库发送http请求

目录requests库HTTP请求方法发送GET请求发送POST请求获取响

目录

requests库

HTTP 请求方法

发送GET请求

发送POST请求

获取响应数据

高级操作

文件下载

文件上传

SSL证书验证

保持会话

requests封装

总结

重点:配套学习资料和视频教学


requests库

​ 什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。

​ 安装:cmd命令行执行pip install requests

HTTP 请求方法

​ HTTP 协议 (Hyper Text Transfer Protocol),一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准。根据HTTP 标准,HTTP 请求可以使用多种请求方法。

  • HTTP 0.9:只有基本的文本GET请求,没有固定的版本号,不支持请求头。
  • HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法:GETPOSTHEAD方法。
  • HTTP 1.1:在1.0的基础上进行更新,新增了五种请求方法:OPTIONSPUTDELETETRACECONNECT方法。
  • HTTP 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须全部小写,而且请求行要独立为:method:scheme:host:path这些键值对。
序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

​ HTTP请求常用的Get和Post两种方法:

  • GET是从服务器上获取数据,POST是向服务器传送数据
  • GET请求参数都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,也就是说GET请求的参数是URL的一部分。
  • POST请求参数是在请求体当中,消息长度没有限制且以隐式的方式进行传送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码

                          

​ 碰到请求SSL验证的,我们是可以直接跳过不验证的,通过设置verify=False就可关闭错误提示,跳过SSL验证,这里只是忽略了SSL验证,并不是没有了SSL验证,它仍然会存在一个警告信息InsecureRequestWarning。

python

import requests
#通过一下两行代码即可把警报消除,即使verify=False,报警还是存在的
from requests.packages import urllib3

urllib3.disable_warnings()

respOnse= requests.get('https://www.12306.cn',verify = False)
print(response.status_code)

保持会话

​ 在requests中,如果直接使用get()post()等方法是可以做到模拟网页的接口请求,但是每次发起请求结束后它就结束了,并不会保存相关的验证信息,如COOKIEs/token;比如第一次使用post()请求登录了某个网站,第二次想获取成功登录后的用户个人信息,再一次发起post()请求时它会要求你需求先登录,明明第一次请求时已经登录了,为什么第二次还提示要先登录呢?实际上两次请求相当于使用了两个浏览器去访问,是两个完全不相关的会话,因此第二次请求是拿不到用户信息的。

​ requests中的session对象能够让我们跨http请求保持某些参数,即让同一个session对象发送的请求头携带某个指定的参数。当然,最常见的应用是它可以让COOKIE保持在后续的一串请求中。

python

# 创建一个session对象,使它能够自动记录上一次请求中的COOKIE信息
se = requests.session()
# 登录接口
login_url = "http://www.test.com/api/member/login"
login_data = {
"mobilephone": "15612345678",
"pwd": "Test1234"
}
res = se.post(url=login_url, data=login_data)
# 登录后查询用户最近的订单记录
order_record_url = "http://www.test.com/api/member/order"
record_data = {
"beginTime": "2020-08-01",
"endTime": "2020-08-15"
}
res2 = se.post(url=order_record_url, data=record_data)
print(res2.json())

requests封装

​ 凡是需要重复使用的,我们都可以对它进行二次封装,写成我们自己的版本,还可以在封装过程中加入我们想要的内容,使用的时候直接调用即可。

python

import requests
class SendSessionRequest:
"""使用session鉴权的接口,记录COOKIEs/token"""
def __init__(self):
self.session = requests.session()
def requests(self, url, method, params=None, data=None, json=None, headers=None):
method = method.lower()
if method == "post":
return self.session.post(url=url, json=json, data=data, headers=headers)
elif method == "patch":
return self.session.patch(url=url, json=json, data=data, headers=headers)
elif method == "get":
return self.session.get(url=url, params=params)

总结

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

                     

 

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方微信名片添加免费领取

               

 


版权声明:本文为MXB_1220原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/MXB_1220/article/details/127097215
推荐阅读
author-avatar
mobiledu2502877493
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有