• 接口自动化框架(四):组装请求数据并通过requests库发送请求


    将公共部分url放到公共,组装url并判断发送请求方式,最后返回响应结果

    import os
    import requests
    from common.myConf import MyConf
    from common.my_path import conf_dir
    class MyRequests:
        # 初始化方法
        def __init__(self):
            # 请求头
            self.headers={"X-Lemonban-Media-Type":"lemonban.v2"}
            # 读取配置文件中的接口url公共地址
            self.base_url=MyConf(os.path.join(conf_dir,"conf.ini")).get("server","host")
        '''
        组装完成后,进行请求的发送,判断是用那种方式进行发送请求的,并返回请求处理结果
        '''
        def send_requests(self,method,api_url,data,token=None):
            # 处理请求头
            self.__deal_header(token)
            # 处理请求url
            url=self.__deal_url(api_url)
            # 调用requests的方法发起一个请求,并得到响应结果
            print(url)
            if method.upper()=="GET":
                resp=requests.request(method,url,params=data,headers=self.headers)
            else:
                resp=requests.request(method,url,json=data,headers=self.headers)
            return resp
        # 获取token
        '''
        需处理请求头,因为除登录接口,其他接口如果要发送请求,需先登录,在进行发送,这个时候可以通过鉴权的方式,通过获取登录接口响应结果中的token值,然后再将token值组装到请求头headers中,后续接口即可进行发送请求(如果存在token就将其组装到发送请求头中,不存在则忽略)
        '''
        def __deal_header(self,token=None):
            if token:
                self.headers["Authorization"]="Bearer {}".format(token)
        # 将公共接口地址与每个请求的url进行组装
        '''
        接口:每个接口地址存在公共的部分如前面一部分为服务器地址,后面一部分为发送请求地址,可将公共部分放在.ini配置文件中,通过配置文件获取公共部分,发送请求前将公共部分和发送请求部分进行组装,后续公共部分发送改变时,直接修改配置文件中公共部分即可,无需再对每个用例的接口请求进行修改。
        '''
        def __deal_url(self,api_url):
            url=self.base_url+api_url
            return url
    if __name__ == '__main__':
        mr = MyRequests()
        url = "member/register"
        req_data = {
            "mobile_phone": "18720100022",
            "pwd": "123456789",
            "reg_name": "py37小简"
        }
        method = "post"
        resp = mr.send_requests(method,url,req_data)
        print(resp.json())
    
        # url地址
        url = "member/login"
        # 请求类型:post
    
        # 请求体
        req_data = {
            "mobile_phone": "18720100022",
            "pwd": "123456789"
        }
        method = "post"
        resp = mr.send_requests(method,url,  req_data)
        print(resp.json())
    
        # 提取出来,给到下一接口去作为请求
        json_res = resp.json()
        token = json_res["data"]["token_info"]["token"]
        member_id = json_res["data"]["id"]
    
        url = "member/recharge"
        # 请求数据
        req_data = {
            "member_id": member_id,
            "amount": 1000
        }
        method = "post"
        resp = mr.send_requests(method,url,  req_data,token=token)
        print(resp.json())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79

    在这里插入图片描述

    总结

    在这里插入图片描述

  • 相关阅读:
    使用easyx制作一个绘画程序
    泛型的类型擦除后,fastjson反序列化时如何还原?
    网易数帆:云原生向左,低代码向右
    【深蓝学院】- Multiplane Images and Neural Rendering
    【ASE入门学习】ASE入门系列五——边缘光
    完美的PopuWindow展示弹窗
    全球无人机灯光秀预计2028年将达到7.19亿美元,年复合增长率(CAGR)为21.46%
    android 各种偶现问题记录
    【题解】同济线代习题一.8.2
    麒麟v10安装mysql(ARM架构)
  • 原文地址:https://blog.csdn.net/weixin_44160044/article/details/126872758