说到python发送HTTP请求进行接口自动化测试,脑子里第一个闪过的可能就是requests库了,当然python有很多模块可以发送HTTP请求,包括原生的模块http.client,urllib2等,但由于原生的模块过于复杂,使用繁琐,那么requests库就诞生了,它也是现阶段比较流行的接口自动化测试工具之一。
![8424da5e340ea99356ed413cfa2d0c8a.png](https://i-blog.csdnimg.cn/blog_migrate/daf4d1ef67352a0559d5bf1ea28b9f50.jpeg)
requests是个第三方库,封装了HTTP请求的所有方法,使用方便简单,只需要根据不同的请求方式调用相对应的方法就可以完成发送网络请求的整个过程,那么今天我们就来说说requests库是如何使用的,那么在开始之前我们大致说一下今天的主要内容:
1. requets如何发送get请求
2. requests如何发送post请求
3. params参数和data参数的区别
4. requests库中Session类的的妙用
5. 针对get请求和post请求,对requests进行简单封装
![bb6c393e4d9faf3d1357ba34f3689bb9.png](https://i-blog.csdnimg.cn/blog_migrate/d16fa08db13a91f6e2d3c09273e3c70b.jpeg)
发送get请求
requests是通过调用get()方法来完成发送get请求的,那么,在掌握requests库如何发送get请求之前,你还应该简单了解一下什么是get请求?
通常在我们学习一个方法如何使用之前,我们需先知道这个方法需要哪些参数?参数类型是什么? 那么我们就先分析一下get()方法的源码:
def get(url, params=None, **kwargs):
r"""Sends a GET request.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the body of the :class:`Request`.
:param **kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response ` object
:rtype: requests.Response
"""
kwargs.setdefault('allow_redirects', True)
return request('get', url, params=params, **kwargs)
这就是get方法的源码了,你应该能够发现,get()方法只有一个必传的参数url,其他参数都是非必传的,那么其他的参数有什么作用呢?
params
对于这个参数,可以是字典,也可以是嵌套元组的列表,基于get请求的特点,请求参数是可以直接跟在URL之后的,以?号开始以key=value的形式传递(多个参数使用&符号进行分割),但是为了明确区分URL和参数,就需要使用params参数传递。
**kwargs:其他一些关键字参数,暂时不做介绍。
接下来我们来看2个简单的实例,体会一下reauets通过get()方法发送一个不带参数的get请求和带参数的请求的过程。
通过get()方法发送get请求访问博客园首页
"""
------------------------------------
@Time : 2019/7/11 20:34
@Auth : linux超
@File : requests_blog.py
@IDE : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
import requests # 导入requests模块
response = requests.get('https://www.cnblogs.com/') # 发送get请求
print(response.text) # 获取响应数据
响应数据
博客园 - 代码改变世界这里我只截取了一部分响应数据,响应数据其实是博客园的首页HTML源码。
可以看到只需要一行代码即可完成整个请求过程,通过response.text得到响应数据(其实这个过程和我们在浏览器中输入博客园地址访问是一样的),当然你还可以使用以下的方法获取不同的响应数据。
response.headers # 获取响应头信息
response.cookies # 获取返回的cookie
response.status_code # 获取状态码
发送带params参数的get请求
"""
------------------------------------
@Time : 2019/7/11 20:34
@Auth : linux超
@File : requests_blog.py
@IDE : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
------------------------------------
"""
import requests
login_url = r'http://***:8080/futureloan/mvc/api/member/login' # 接口地址
login_data = {"mobilephone": "13691579841