• pyhon + requests 进行接口测试 过程中遇到的问题及解决办法


     

    【python + request发送简单的请求】

    说明:这是面向对象的编程,目的仅是实现功能,无扩展 和 面向对象 可言,一步一步来,提升编程的规范

    以下示例  接口参数格式:json格式 

    import requests
    import json
    '''发送新增警员信息的http请求'''
    #以字典的方式存储需要传递的参数
    add_url = 'http://XX.XXX.XXX.XX:端口号/car-oss/webapi/pcWatch/save'
    add_par = {
        'pcNum':'95830',
        'pcName':'测试',
        'pcPhoneNum':'22345',
        'orgname':'M1对讲',
        'watchImei':'11220'
    }
    #以字典方式储存定制的headers请求头信息
    add_header = {
        'Content-Type':'application/json',
        'connection':'keep-alive'
    }
    #用户登录前的cookies,因为用户登录后才能进行新增警员信息的操作
    add_cookie = {
        "JSESSIONID":"3E2ED9359E53D31FBD13FE2ADE9D20D2"
    }
    r = requests.post(add_url,data=json.dumps(add_par),headers=add_header,cookies=add_cookie)#参数要转json格式传输要使用json.dumps()进行转换
    #以文本方式获取请求响应内容
    print(r.text)
    '''
    查询上刚刚新增的那条信息
    '''
    Search_url='http://XX.XXX.XXX.XX:端口号/car-oss/webapi/easyflow/datatable/queryresult'
    Search_par={
        "pageSize":10,
        "pageIndex":1,
        "orgname":"M1对讲",
        "pcNum":"95830",
        "watchImei":"",
        "name":"pc_watch_manage"
    }
    Search_header={
        'Content-Type':'application/json'
    }
    Search_cookie={
        'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2'
    }
    r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header,cookies=Search_cookie)
    print(r1.text)

    参数要转json格式传输要使用json.dumps()进行转换

    以下示例  接口参数:以form表单形式

        add_par  =pcredit_encrypt() #字典的形式
    
        # 以字典方式储存定制的headers请求头信息
        add_header = {
            'Content-Type': 'application/x-www-form-urlencoded',
            'connection': 'keep-alive'
        }
        # 用户登录前的cookies,因为用户登录后才能进行新增警员信息的操作
        add_cookie = {
            "JSESSIONID": "3E2ED9359E53D31FBD13FE2ADE9D20D2"
        }
        r = requests.post(add_url, data=add_par, headers=add_header)

    Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典

    可以参照:https://www.cnblogs.com/du-hong/p/10592519.html

    【python把响应数据中Unicode转中文】

    '''
    这是响应数据:b'{"xe5xa7x93……"}'
    这是期望效果:{"姓名":"郑……","邮箱":"ea.cn","手机号":"134……","地址":"……-12-9","身份证号":"1356……","银行卡号":"621……"}
    '''
    
    print(r.content.decode('UTF-8'))
    
    #这样即可

    【python处理接口的响应数据】

    将str转换为dict

    temp={"姓名":"李某某","邮箱":"oma01ud@googlemail.com","手机号":"13608377932","地址":"兰山路53号-13-7","身份证号":"360600199806197128","银行卡号":"6222021934694345603"}
    #type(temp)  是str
    #要获取str 中的姓名、手机号、身份证号
    tem=json.loads(temp)
    print(type(tem))  #dict
    #这是一种,还有其他方法
    #https://www.cnblogs.com/xiao-xue-di/p/11414210.html

    用正则表达式提取

    '''
    content=Oo%2Bbd3D%0A&sign=BGN32kwD0A
    
    '''' 
    
    r = requests.post(add_url, data=add_par, headers=add_header)
        temp = r.content.decode('UTF-8')
       #正则表达式 提取str 中的content sign
        content=re.findall(r"content=(.+?)&",temp) #提取到是一个list
        sign = re.findall(r"sign=(.+)", temp)
    
        trade={}
        trade['content']=content[0]  #需要取第1个元素
        trade['sign'] = sign[0]
  • 相关阅读:
    Helpers Overview
    Validation
    Support Facades
    Session Store
    位运算(参考百科)
    开源项目_可能使用到的开源项目集合
    秒杀系统架构分析与实战(转)
    shell命令之根据字符串查询文件对应行记录
    MySQL做为手动开启事务用法
    spring 加载bean过程源码简易解剖(转载)
  • 原文地址:https://www.cnblogs.com/ww-xiaowei/p/14062285.html
Copyright © 2020-2023  润新知