Python接口测试之如何使用requests发起请求

 更新时间:2024年06月27日 09:30:43   作者:向阳而生_cc  
这篇文章主要介绍了Python接口测试之如何使用requests发起请求问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

认识requests模块

1、requests介绍

requests是一个第三方库,因此首先需要安装这个库,安装三步走:

  • 安装:pip install requests
  • 在文件中引用这个模块:import requests
  • 使用这个库发起一个请求(get请求、post请求等)

2、使用requests发起get或者post请求

  • 使用requests的post方法发起post请求
import requests  
resp = requests.post(api_url,json=req_data)
  • 使用requests的request方法发起post请求
import requests
  resp = requests.request("post",api_url,json=req_data)

说明:这样做,每调用一次requests.request就会去实例化一次Session类

  • 所有的请求都在一个会话当中

如果是session鉴权或者coockies鉴权,可以直接利用Session类实例化。

这样做了就不用额外处理了,直接利用会话对象s发起请求,如下所示:

import requests
s = requests.Session()
   resp = s.request(method,api_url,json=req_data)

3、关于post/put/delete请求中,data参数和json参数格式

  • json参数

json参数:requests库,针对请求体格式为application/json的,独自写了一个json参数的处理机制,数据类型是字典。因此,如果使用接送传参,只需要将参数写为字典的格式即可发起请求。

  • data参数

data参数:data为字典类型,默认的请求体格式为的application/x-www-form-urlencoded。

4、Respobse对象

响应数据返回主要有几下几类:

  • resp.status_code -- 获取响应状态码
  • resp.headers -- 获取响应头
  • resp.text -- 获取响应数据
  • resp.json() -- 把json格式的响应数据,转换成python字典

实战

1、发起post请求

  • 如何抓包获取要模拟的接口详情:

  • 以下编写代码:
import requests
 
# 请求url
url = "https://openapiv5.ketangpai.com//UserApi/login"
 
'''请求方法'''
method = "post"
# 如果是post请求,需要查看请求头当中的content-type的数据格式类型
'''请求体数据'''
req_data = {
                "email":"18812345678",  # 随意写的
                "password":"f876543",   # 随意写的非真实
                "remember":"0","code":"",
                "mobile":"",
                "type":"login",
                "reqtimestamp":1697007648530}
 
'''第一种方法:使用requests的post方法发起post请求'''
# rt = requests.post(url=url,json=req_data)
# '''获取响应的原始数据'''
# print(rt.text)
# '''查看获取响应的原始数据的数据类型'''
# print(type(rt))  # <class 'requests.models.Response'>
# '''把响应的json数据,转换成python字典。'''
# print(rt.json())
# print(type(rt.json()))      # 字典类型
# print(rt.status_code,"\n",rt.headers,"\n\n",rt.cookies)
 
'''第二种方法:使用request方法发送post请求'''
respose = requests.request(method,url,json=req_data)
print(respose.text)    # 结果与上述一致
 
'''
使用session方法进行请求数据
'''
s = requests.Session()
resp = s.request(method,url,json=req_data)
print("http响应数据(原始):",resp.text)

2、发起get请求

盘点一下get请求的参数:

  • params参数:get请求,请求参数一般是拼接在url后面的,因此请求参数使用params参数(字典类型)
  • headers参数:字典类型。用户项目需要添加到请求头的,传参给它。
  • verify参数:遇到发起https请求的时候,要证书。 将verify=False就可以关掉证书要求,可以发送https请求

代码实战

1、抓包找到我们要做get请求实战的接口

2、使用代码编写get请求发送

注意:接口连贯时,需要添加链接点“token”,才可以获取响应的完整信息

from time import sleep
import requests
 
# 请求url
url = "https://openapiv5.ketangpai.com//UserApi/login"
 
'''请求方法'''
method = "post"
# 如果是post请求,需要查看请求头当中的content-type的数据格式类型
'''请求体数据'''
req_data = {
                "email":"18829489142",
                "password":"fangbang666",
                "remember":"0","code":"",
                "mobile":"",
                "type":"login",
                "reqtimestamp":1697007648530}
 
'''
连续上个文件的post请求,从登录接口中获取token
'''
'''
使用session方法进行请求数据
'''
s = requests.Session()
resp = s.request(method,url,json=req_data)
# print("http响应数据(原始):",resp.text)
# print(resp.json())
# 获取token,提供给下文
token = resp.json()["data"]["token"]
 
# 暂停6秒针
sleep(6)
 
url = "https://openapiv5.ketangpai.com//TourApi/isTourV2"
method = "get"
params = {
            "version" : 32,
            "courseid" : "MDAwMDAwMDAwMLOGy5WHqbdshNtyoQ"
            }
# 往请求头里面,添加鉴权的token处理
headers = {"token":token}
# 发请求的时候,带上请求头
res = requests.request(method,url,params=params,headers=headers)
print(res.text)

结果如下:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python打印值的两种方式及区别详解

    Python打印值的两种方式及区别详解

    这篇文章主要对比了Python中print函数的逗号分隔法与f-string,指出二者在实现机制、性能、可读性上存在差异,建议调试用逗号法简便,正式代码优先使用f-string提升清晰度与格式化能力,强调保持代码风格一致性的重要性,需要的朋友可以参考下
    2025-08-08
  • 离线安装python的requests库方法

    离线安装python的requests库方法

    大家好,本篇文章主要讲的是离线安装python的requests库方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python+seaborn实现联合分布图的绘制

    Python+seaborn实现联合分布图的绘制

    联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操作中经常需要用到。本文将通过seaborn实现绘制联合分布图,需要的可以参考一下
    2023-02-02
  • 利用numpy实现一、二维数组的拼接简单代码示例

    利用numpy实现一、二维数组的拼接简单代码示例

    这篇文章主要介绍了利用numpy实现一、二维数组的拼接简单代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Python入门之面向对象和类

    Python入门之面向对象和类

    这篇文章主要为大家介绍了Python面向对象和类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 利用Matplotlib实现单画布绘制多个子图

    利用Matplotlib实现单画布绘制多个子图

    这篇文章主要介绍了利用Matplotlib实现单画布绘制多个子图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • OpenCV+python手势识别框架和实例讲解

    OpenCV+python手势识别框架和实例讲解

    今天小编就为大家分享一篇OpenCV+python手势识别框架和实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python列表append()函数使用方法详解

    Python列表append()函数使用方法详解

    python中的append()函数是在列表末尾添加新的对象,且将添加的对象最为一个整体,下面这篇文章主要给大家介绍了关于Python列表append()函数使用方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python数据类型之String字符串实例详解

    Python数据类型之String字符串实例详解

    这篇文章主要介绍了Python数据类型之String字符串,结合实例形式详细讲解了Python字符串的概念、定义、连接、格式化、转换、查找、截取、判断等常见操作技巧,需要的朋友可以参考下
    2019-05-05
  • python 实现一次性在文件中写入多行的方法

    python 实现一次性在文件中写入多行的方法

    今天小编就为大家分享一篇python 实现一次性在文件中写入多行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论