python利用反射和解包进行http请求

反射:python内置方法主要用来调用方法和获取属性值,语法为getattr(object,"function"),第一个参数为对象名,第二个参数为该对象中函数名或属性值

class MyClass:
    def say_hello(self):
        print("Hello, world!")

obj = MyClass()

# 使用getattr()函数获取方法,并调用它
method = getattr(obj, "say_hello")
method()  # 输出: Hello, world!

解包:将(数组,字典,集合)里面的参数拆解一一传入对应变量,可以通过 ** 运算符来实现这种解包,定义一个字典

request_data = {
    "url": "https://baidu.com",
    "method": "GET",
    "headers": {
        "User-Agent": "Mozilla/5.0"
    },
    "timeout": 10,
    "verify_ssl": True
}`,

然后定义一个函数,定义需要传入的各种形参

def process_request_data(url, method, headers, **kwargs):
    print("URL:", url)
    print("Method:", method)
    print("Headers:", headers)
    print("Other data:", kwargs)`

然后通过**符号解包完成调用process_request_data函数

process_request_data(**request_data)

上面热身结束,下面就开始利用python的反射和解包实现http请求:
准备请求参数:

			# 组装请求参数
            request_data = {
                "url": new_url,
                "params": params,
                "data": data,  # 字典
                "headers": headers
            }

选择请求方式,这里我用的excel做的数据化驱动,在excel中已经填写好请求方式了:

 method = ExcelData["method"]

self.kw是作者关键字封装实例化后的变量,然后发送http请求:

res = getattr(self.kw, method)(**request_data)

actualResult为需要提取的响应字段,然后提取响应:

msg = self.kw.get_response(res.text, ExcelData["actualResult"])

__json_extractor为作者封装的json提取器,最后进行断言:

 if ExcelData['expectResult'] == msg:
     value = MSG_OK

     # 进行json提取
     self.__json_extractor(ExcelData, res.text)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值