zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    解决:Failed to update database: "APP_DATA\ASPNETDB.MDF" is readonly .
    MySQL DATE_ADD() 函数
    用struts上传图片,中文命名的图片无法显示
    hrbustoj 1291 点在凸多边形内
    按标签来查技术文章
    ClassLoader in Java
    [Python]标准库inspect
    IMEI修改(IMEI第十五位验证码的计算)
    游戏之巅:游戏背后的创业风云
    常用的网站后台编辑器
  • 原文地址:https://www.cnblogs.com/ww-xiaowei/p/14062285.html
Copyright © 2011-2022 走看看