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

封装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)

持续更新中……

发布了52 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/yijinaqingan/article/details/89765105