• Python —— 接口测试之使用requests发起请求实战


    1、认识requests模块

    1、requests介绍

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

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

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

    1、使用requests的post方法发起post请求

    1. import requests 
    2. resp = requests.post(api_url,json=req_data)


    2、使用requests的request方法发起post请求

    1. import requests
    2. resp = requests.request("post",api_url,json=req_data)

            说明:这样做,每调用一次requests.request就会去实例化一次Session类
    3、所有的请求都在一个会话当中

    如果是session鉴权或者coockies鉴权,可以直接利用Session类实例化。这样做了就不用额外处理了,直接利用会话对象s发起请求,如下所示:

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

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

    1、json参数

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


    2、data参数

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

    4、Respobse对象

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

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

    2、实战

    1、发起post请求

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

     2、以下编写代码:

    1. import requests
    2. # 请求url
    3. url = "https://openapiv5.ketangpai.com//UserApi/login"
    4. '''请求方法'''
    5. method = "post"
    6. # 如果是post请求,需要查看请求头当中的content-type的数据格式类型
    7. '''请求体数据'''
    8. req_data = {
    9. "email":"18812345678", # 随意写的
    10. "password":"f876543", # 随意写的非真实
    11. "remember":"0","code":"",
    12. "mobile":"",
    13. "type":"login",
    14. "reqtimestamp":1697007648530}
    15. '''第一种方法:使用requests的post方法发起post请求'''
    16. # rt = requests.post(url=url,json=req_data)
    17. # '''获取响应的原始数据'''
    18. # print(rt.text)
    19. # '''查看获取响应的原始数据的数据类型'''
    20. # print(type(rt)) #
    21. # '''把响应的json数据,转换成python字典。'''
    22. # print(rt.json())
    23. # print(type(rt.json())) # 字典类型
    24. # print(rt.status_code,"\n",rt.headers,"\n\n",rt.cookies)
    25. '''第二种方法:使用request方法发送post请求'''
    26. respose = requests.request(method,url,json=req_data)
    27. print(respose.text) # 结果与上述一致
    28. '''
    29. 使用session方法进行请求数据
    30. '''
    31. s = requests.Session()
    32. resp = s.request(method,url,json=req_data)
    33. print("http响应数据(原始):",resp.text)

    2、发起get请求

    1、盘点一下get请求的参数:

    1、params参数:get请求,请求参数一般是拼接在url后面的,因此请求参数使用params参数(字典类型)

    2、headers参数:字典类型。用户项目需要添加到请求头的,传参给它。

    3、verify参数: 遇到发起https请求的时候,要证书。 将verify=False就可以关掉证书要求,可以发送https请求

    2、代码实战

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

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

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

    1. from time import sleep
    2. import requests
    3. # 请求url
    4. url = "https://openapiv5.ketangpai.com//UserApi/login"
    5. '''请求方法'''
    6. method = "post"
    7. # 如果是post请求,需要查看请求头当中的content-type的数据格式类型
    8. '''请求体数据'''
    9. req_data = {
    10. "email":"18829489142",
    11. "password":"fangbang666",
    12. "remember":"0","code":"",
    13. "mobile":"",
    14. "type":"login",
    15. "reqtimestamp":1697007648530}
    16. '''
    17. 连续上个文件的post请求,从登录接口中获取token
    18. '''
    19. '''
    20. 使用session方法进行请求数据
    21. '''
    22. s = requests.Session()
    23. resp = s.request(method,url,json=req_data)
    24. # print("http响应数据(原始):",resp.text)
    25. # print(resp.json())
    26. # 获取token,提供给下文
    27. token = resp.json()["data"]["token"]
    28. # 暂停6秒针
    29. sleep(6)
    30. url = "https://openapiv5.ketangpai.com//TourApi/isTourV2"
    31. method = "get"
    32. params = {
    33. "version" : 32,
    34. "courseid" : "MDAwMDAwMDAwMLOGy5WHqbdshNtyoQ"
    35. }
    36. # 往请求头里面,添加鉴权的token处理
    37. headers = {"token":token}
    38. # 发请求的时候,带上请求头
    39. res = requests.request(method,url,params=params,headers=headers)
    40. print(res.text)

    结果如下:

    完结,撒花~

  • 相关阅读:
    【C语言】ROUND_UP宏定义的解释
    Linux系统上2个非常有意思也最特殊的目录/run和/proc的作用以及监测项
    【网络安全】——逻辑漏洞之短信轰炸漏洞
    2VGen-XL高清视频生成视频大模型
    零基础入门智能射频---python的无人机测向天线自动化设计
    stm32——hal库学习笔记(IIC)
    设计模式和Java类加载器简单介绍
    RTKLIB算法优化之北斗伪距多路径代码
    css 对号 叉号
    实现k8s发布系统的设计和思考
  • 原文地址:https://blog.csdn.net/lzf_hlh/article/details/133768559