[转载] python接口测试:封装get和post请求+重新封装requests类

参考链接: 使用Python进行GET和POST请求

封装get、post请求如下:  

#!/usr/bin/env python

# coding=utf-8

 

import requests

 

 

class RunMain:

    """

    根据传入的URL、请求方式和请求参数来发送请求,并返回requests.models.Response

    """

    def __init__(self):

        pass

 

    @staticmethod

    def send_post(url, params=None):

        # 传回的是json对象

        try:

            res = requests.post(url=url, data=params)

            return res

        except Exception as msg:

            return msg

 

    @staticmethod

    def send_get(url, params=None):

        try:

            res = requests.get(url=url, params=params)

            return res

        except Exception as msg:

            return msg

 

    def run_main(self, url, method, params=None):

        if method == 'GET':

            print('This is a get request')

            res = self.send_get(url, params)

        elif method == 'POST':

            print('This is a post request')

            res = self.send_post(url, params)

        # print('返回requests.models.Response:')

            return res

        else:

            print('请重新输入请求方式')

        return res

 

 

if __name__ == '__main__':

    # url_dict0 = {

    #     'url': 'http://baidu.com/',

    #     'method': 'GET'

    # }

    url0 = 'http://baidu.com/'

    params0 = {

        'key1': 'params1', 'key2': 'params2'

    }

    Res = RunMain()

    res0 = Res.run_main(url=url0, method='GET')

    print(res0)

    print(type(res0))

 

requests类封装如下: 

  

#!/usr/bin/env python

# coding=utf-8

 

from receive_interface import RunMain

import requests

 

 

class ReCoSession:

    def __init__(self, url):

        self.url = url

 

    @staticmethod

    # 获取cookies

    def res_cookies(url, method):

        res = RunMain().run_main(url, method)

        # 返回cookies并转换成字典

        # res = requests.utils.dict_from_cookiejar(res.cookies)

        if res is None:

            print('cookies为空')

        else:

            return res.cookies

 

    @staticmethod

    # 发送cookies

    def send_cookies(url, method, c_method):

        if method == 'GET':

            # c_method:0:表示是要从上一个请求的headers中获取cookies,1:使用cookies字典传入cookies

            if c_method == 0:

                # 随headers一起发送

                headers = RunMain().run_main(url, method).headers

                res = requests.get(url, headers=headers)

                return res.cookies

            else:

                # 使用cookies字典传cookies参数

                cookie = "sts=0; wc=58452; lc=58452; lc2=58452; wc_n=%25u5609%25u5174;" \

                                "bdUid=40965C47E1480000ACB39B550003; " \

                                "Hm_lvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552830300;" \

                                "Hm_lpvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552911186"

                # 序列化处理:先将cookie使用分号分隔形成list,然后对list中元素用等号分隔,并配对成字典

                cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in ''.join(cookie.split()).split("; ")}

                # cookie_dict = {}

                # for i in ''.join(cookie.split()).split(';'):

                #     cookie_dict[i.split('=')[0]] = i.split('=')[1]

                # print(cookie_dict)

                res = requests.get(url, cookies=cookie_dict)

                return res.cookies

        else:

            # c_method:0:表示是要从上一个请求的headers中获取cookies,1:使用cookies字典传入cookies

            if c_method == 0:

                # 随headers一起发送

                headers = RunMain().run_main(url, method).headers

                res = requests.get(url, headers=headers)

                return res.cookies

            else:

                # 使用cookies字典传cookies参数

                cookie = "sts=0; wc=58452; lc=58452; lc2=58452; wc_n=%25u5609%25u5174;" \

                                "bdUid=40965C47E1480000ACB39B550003; " \

                                "Hm_lvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552830300;" \

                                "Hm_lpvt_6ab7a391c8d69b4f62b7c54b2d70919c=1552911186"

                # 序列化处理:先将cookie使用分号分隔形成list,然后对list中元素用等号分隔,并配对成字典

                cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in ''.join(cookie.split()).split("; ")}

                # cookie_dict = {}

                # for i in ''.join(cookie.split()).split(';'):

                #     cookie_dict[i.split('=')[0]] = i.split('=')[1]

                # print(cookie_dict)

                res = requests.get(url, cookies=cookie_dict)

                return res.cookies

 

    @staticmethod

    def res_session(self, url, method):

        session = self.requests.session()  # 建立一个session

        if method == 'GET':

            res = session.get(url)

        else:

            res = session.post(url)

        return res

 

    @staticmethod

    # 获取json

    def res_json(url, method):

        print('n返回请求的json并转换成字典')

        res = RunMain().run_main(url, method)

        # res = res0.run_main(url=url, method=method)

        try:

            res = res.json()

        except Exception as msg:

            print(msg)

        return res

 

 

if __name__ == '__main__':

    # url_dict0 = {

    #     'url': 'https://baidu.com/',

    #     'method': 'POST'

    # }

    url0 = 'http://httpbin.org/'

    data = {}

    Res = ReCoSession(url=url0)

    res_cookie = requests.utils.dict_from_cookiejar(Res.res_cookies(url=url0, method='GET'))

    res_json = Res.res_json(url=url0, method='GET')

    print(res_cookie, res_json)

 

持续更新中……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值