全面熟练Requests库以及底层方法调用逻辑

请求

def get(url,params=none,**kwargs):

url: 必需,表示要发送请求的 URL 地址。
params: 可选,默认为 None,表示要作为查询参数发送的数据,通常是一个字典或类似字典的对象。
**kwargs: 表示接受任意数量的关键字参数,这些参数将被传递给底层的 HTTP 库,以便进行定制化的配置。

def post(url,data=None,json=None,**kwargs):

url: 必需,表示要发送请求的 URL 地址。
data: 可选,默认为 None,表示要作为表单数据发送的内容,通常是一个字典或类似字典的对象。
json: 可选,默认为 None,表示要作为 JSON 数据发送的内容,通常是一个字典或类似字典的对象。
**kwargs: 表示接受任意数量的关键字参数,这些参数将被传递给底层的 HTTP 库,以便进行定制化的配置。

postman四种传参方式

在这里插入图片描述

def put(url,data=none,**kwargs):

url: 这是你要发送PUT请求的目标URL。
data=None: 这是可选的参数,用于传递要发送的数据。默认值为None,表示不发送任何数据。具体传递的数据内容取决于你要发送的API和数据格式。
**kwargs: 这是一个可变数量的关键字参数,允许你传递任意数量的其他参数给函数。这些参数通常是用于配置HTTP请求的其他选项,比如请求头、超时时间等。具体参数和其含义可以根据具体的HTTP库而定。

def delete(url,**kwargs):

url: 这是你要发送 DELETE 请求的目标 URL。
**kwargs: 这是一个可变数量的关键字参数,允许你传递任意数量的其他参数给函数。这些参数通常用于配置 HTTP 请求的其他选项,比如请求头、超时时间等。具体参数和其含义可以根据你使用的 HTTP 库而定。

requests响应部分

res.text 返回的就是字符串形式的响应结果
res.json() 返回字典形式的结果
res.content() 返回字节类型的结果
res.status_code 返回状态码
res.reason 返回状态信息
res.cookie 返回cookie信息
res.encoding 返回编码格式
res.headers 返回相应头
res.requests.xxx 得到请求数据

调用的底层方法

requests.request(“get”,url,params=params,**kwargs)

requests.request()调用session.request方法

session.request(method=method, url=url, **kwargs)
def request(
self,
method,
url,
params=None,
data=None,
headers=None,
cookies=None,
files=None,
auth=None,
timeout=None,
allow_redirects=True,
proxies=None,
hooks=None,
stream=None,
verify=None,
cert=None,
json=None,
):

pytest之接口项目实战

import requests


class TestApi:
    #获取鉴权码的接口
    def test_get_token(self):
        urls = "https://api.weixin.qq.com/cgi-bin/token"
        datas = {
            "grant_type": "client_credential",
            "appid": "wxid_w41rhkp589b612",
            "secret": "Fenduo2024"
        }
        res = requests.get(url=urls, params=datas)
        print(res.json())
    #获取测试查询的接口
    def test_select_flag(self):
        urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
        datas= {
            "access_token": "???"
        }
        res= requests.get(url=urls, params=datas)
        print(res.json())



if __name__ == '__main__':
    TestApi().test_get_token()

在这里插入图片描述

接口关联的三个层级:

通过类变量保存中问变量实现接口关联

import jsonpath
import requests


class TestApi:
    #创建一个类变量
    access_token=" "
    #获取鉴权码的接口
    def test_get_token(self):
        urls = "https://api.weixin.qq.com/cgi-bin/token"
        datas = {
            "grant_type": "client_credential",
            "appid": "wx8a9de038e93f77ab",
            "secret": "8326fc915928dee3165720c910effb86"
        }
        res = requests.get(url=urls, params=datas)
        # 从响应结果中解析出 JSON 数据,并使用 jsonpath 提取出 access_token 的值
        # jsonpath.jsonpath() 返回一个列表,包含所有匹配到的结果,这里假设 access_token 只有一个
        lis=jsonpath.jsonpath(res.json(), "$.access_token")
        # TestApi.access_token=res.json()["access_token"]
        # print(TestApi.access_token)
        # 打印提取到的 access_token 的值,lis[0] 是因为 jsonpath 返回的是一个列表,我们需要取第一个元素
        print(lis[0])


    #获取测试查询的接口
    def test_select_flag(self):
        urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
        datas= {
            "access_token": TestApi.access_token
        }
        res= requests.get(url=urls, params=datas)
        print(res.json())



if __name__ == '__main__':
    TestApi().test_get_token()
    TestApi().test_select_flag()

在这里插入图片描述
在这里插入图片描述

通过单的文件保存中间变量实现接口关联

极限封装成零代码的方式实现接口关联

接口关联的方式

(1)正则提取实现接口关联
re.seach()诵过正则匹配一个值,通过下标1取值,没有匹到版回None
re.findall(通过正则匹配多个值,返回List,通过下标取值,没有匹配到返回None
(2)JsonPath提取实现接口关联
jsonpath.jsonpath()返回一个列表,通过下标取值,没有找到返回None.

#获取鉴权码的接口
    def test_get_token(self):
        urls = "https://api.weixin.qq.com/cgi-bin/token"
        datas = {
            "grant_type": "client_credential",
            "appid": "wx8a9de038e93f77ab",
            "secret": "8326fc915928dee3165720c910effb86"
        }
        res = requests.get(url=urls, params=datas)
        print(res.json())

在这里插入图片描述

import jsonpath
import requests


class TestApi:
    #创建一个类变量
    access_token=" "
    #获取鉴权码的接口
    def test_get_token(self):
        urls = "https://api.weixin.qq.com/cgi-bin/token"
        datas = {
            "grant_type": "client_credential",
            "appid": "wx8a9de038e93f77ab",
            "secret": "8326fc915928dee3165720c910effb86"
        }
        res = requests.get(url=urls, params=datas)
        # 从响应结果中解析出 JSON 数据,并使用 jsonpath 提取出 access_token 的值
        # jsonpath.jsonpath() 返回一个列表,包含所有匹配到的结果,这里假设 access_token 只有一个
        lis=jsonpath.jsonpath(res.json(), "$.access_token")
        # TestApi.access_token=res.json()["access_token"]
        # print(TestApi.access_token)
        # 打印提取到的 access_token 的值,lis[0] 是因为 jsonpath 返回的是一个列表,我们需要取第一个元素
        print(lis[0])


    #获取测试查询的接口
    # def test_select_flag(self):
    #     urls= "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"
    #     datas= {
    #         "access_token": "???"
    #     }
    #     res= requests.get(url=urls, params=datas)
    #     print(res.json())



if __name__ == '__main__':
    TestApi().test_get_token()

在这里插入图片描述

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 17:02:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 17:02:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 17:02:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 17:02:02       18 阅读

热门阅读

  1. 总结一下react常用到的hooks

    2024-03-29 17:02:02       14 阅读
  2. leetcode473 火柴拼正方形

    2024-03-29 17:02:02       13 阅读
  3. vue前端播放视频

    2024-03-29 17:02:02       18 阅读
  4. React组件及组件通讯

    2024-03-29 17:02:02       16 阅读
  5. 企业文化与就业年龄歧视问题

    2024-03-29 17:02:02       17 阅读
  6. AQS

    2024-03-29 17:02:02       14 阅读
  7. Python从零到一构建GPT模型

    2024-03-29 17:02:02       18 阅读
  8. git之目前的主流版本

    2024-03-29 17:02:02       24 阅读
  9. day 41 动归 04

    2024-03-29 17:02:02       17 阅读
  10. RocketMq总结

    2024-03-29 17:02:02       15 阅读