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'{"\xe5\xa7\x93\……"}'
这是期望效果:{"姓名":"郑……","邮箱":"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]

 

posted @ 2020-12-02 14:32  幸福在今天  阅读(321)  评论(0)    收藏  举报