1、封装Requests

requests是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
每次发送请求,都会调用requests库。既然如此,第一步就来封装请求
新建requests_util.py文件

  1. _test_encode方法:处理接口返回值中unicode编码
  2. send_request方法:发送请求。有的项目使用cookie做接口关联,可以使用requests.utils.dict_from_cookiejar(response.cookies)将cookie提取,存公共参数文件中
  3. execute_request方法:执行请求
class RequestsUtil:

    def __init__(self):
        pass

    @classmethod
    def _test_encode(cls, res_text):
        """
        处理接口返回值中, 出现unicode编码 \\u767d
        :param res_text: 接口返回值
        :return: 处理后的返回值
        """
        match = re.search(r"\\u[0-9a-fA-F]{4}", res_text)
        if match:
            result = res_text.encode().decode('unicode_escape')
        else:
            result = res_text
        return result

    def send_request(self, **kwargs):
        """
        发送请求
        :param kwargs: 请求参数
        :return:
            response: 请求响应
        """
        with requests.Session() as session:
            response = None
        try:
            # 发送请求
            response = session.request(**kwargs)
            # 获取响应中的cookie
            set_cookie = requests.utils.dict_from_cookiejar(response.cookies)
            # 如果存在cookie, 将cookie写入yaml文件中
            if set_cookie:
                # print(f'获取到cookie: {set_cookie}')
                write_extract_yaml({'Cookie': set_cookie})
            res = self._test_encode(response.text)
            # print(res)
        except requests.exceptions.ConnectionError:
            print('接口请求异常,可能是request的链接过多或者速度过快导致程序报错! ')
        except requests.exceptions.RequestException as e:
           print('请求异常,请检查系统数据是否正常!')
        return response

    def execute_request(self, name, method, url, headers=None, cookies=None, files=None, **kwargs):
        """
        执行请求
        :param name: 接口名称
        :param method: 请求方式
        :param url: 请求地址
        :param headers: 请求头
        :param cookies: cookies
        :param files:   文件上传
        :param kwargs:  请求参数 如data、json、params等
        :return:
        """
        response = self.send_request(
            method=method,
            url=url,
            headers=headers,
            cookies=cookies,
            files=files,
            timeout=10,
            verify=True,
            **kwargs)

        return response

封装requests库后,之间的接口就可以直接调用execute_request方法,传入参数,发送请求

class DemoCase:
    access_token = ''
	
	# 登录接口
    def test_login(self):
        url = "https://api.weixin.qq.com/cgi-bin/token"
        params = {
            "grant_type": "client_credentialxxxxxxxxxxxxxxxx",
            "appid": "wx2a3d01a57cd117f4xxxxxxxxxxxxxxxxxxxx",
            "secret": "938fa8f53264eecf325dcd67546c747exxxxx"
        }
        res = RequestsUtil().execute_request(name=None, method="get", url=url, params=params)
        return_data = res.json()
        extract_data = {"access_token": return_data['access_token']}
        # 把中间变量(token)写入extract文件
        DemoCase.access_token = return_data['access_token']
        print(res.json())
	
	# 查询标签接口
    def test_select(self):
        url = "https://api.weixin.qq.com/cgi-bin/tags/get?access_token"
        params = {
            'access_token': DemoCase.access_token
        }
        res = RequestsUtil().execute_request(name=None, method="get", url=url, params=params)
        print(res.json())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值