python接口测试返回数据为字典取值方式


Posted in Python onFebruary 12, 2022

接口测试返回数据为字典取值

接口测试通常需要校验返回数据跟预期结果是否一致,这个时候如果返回数据为字典,那么我们要拿到我们想要的key对应的values时,需巧妙的运用dict.keys()、dict.values()和for循环,以及列表相关知识点。

实例

这是我调接口返回的数据,该数据为dict类型,我的目标是要拿到account。

#接口返回的数据:
api_result = {'code': '000001', 
'dataMap': {'data': 
{'amount': 0, 'billingWeight': 0, 'quantity': 0}},
 'failureString': '', 'failures': [], 
 'flag': 'success', 'hasError': False, 'message': '请求成功'}

方法

#方法1:
print("这是方法1")
for i in api_result.keys():
    if i == 'dataMap':
        print(api_result[i]['data']['amount'])
#方法2:
print("这是方法2")
getkey = api_result.get('dataMap')
# print(getkey)
cc =list(getkey.values())[0]
print(cc['amount'])
#方法3:
print("这是方法3")
print(api_result['dataMap']['data']['amount'])

运行结果

python接口测试返回数据为字典取值方式

本次介绍了三个方法,一个循环,一个利用keys()和values(),另外一个直接嵌套取key对应的值。当然大家可以看出来,最后一种方法是最快最简单的。

python接口测试--sign签名

最近测试的项目由于需要给第三方调用,所以增加了安全性的认证,所有的接口调用都需要签名进行验签,

于是研究了一下使用python按照接口签名规范生成sign值。

接口签名规范

1、请求参数中的 sign 参数和为空的参数去除后,剩余的多个键值对,将键按照字典序排序,

并以key1=value1&key2=value2的格式拼成一个字符串

2、拼接的字符串需要URLEncode

3、将开发者的key拼接在第一步中排序后的字符串后面得到待签名字符串

4、使用md5算法加密待加密字符串并转为大写即为sign

实现代码

下面为实现的 代码片。

import time
import requests
import  json
import urllib,hashlib
url = "http://www.xxx.xx"
#获取当前的时间戳
stamp = time.time()
print(stamp)
#转换为int类型的13位时间戳
timestam = int(round(stamp*1000))
print(timestam)
time_new = str(timestam)
print(type(time_new))
data ={
    'appId':'3301820001',
    "outTradeNo":"20201026001",
    "amount":"100",
    "body":"test",
    "timestamp":time_new,
    "notifyUrl":"http://localhost:8080/notify",
}
#将键按照字典序排序
data_order = sorted(data.items(),key=lambda x:x[0],reverse=False)
#将列表转化为字典
data_new = dict(data_order)
print(data_new)
#将key=value键值对进行url编码
datanew = urllib.parse.urlencode(data_new)
datadic = datanew + "&key=BF1BDE5A649724056F904A9335B1C1C7455655"
print(datadic)
#创建md5对象
m = hashlib.md5()
m= hashlib.md5(datadic.encode())
data_md5 = m.hexdigest()
#将小写字母切换为大写字母
sign=data_md5.upper()
print(sign)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python制作企业邮箱的爆破脚本
Oct 05 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
python里运用私有属性和方法总结
Jul 08 Python
python基础教程之while循环
Aug 14 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
python如何将两张图片生成为全景图片
Mar 05 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
Python socket如何解析HTTP请求内容
Feb 12 #Python
python全面解析接口返回数据
Feb 12 #Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 #Python
python中出现invalid syntax报错的几种原因分析
Feb 12 #Python
python ConfigParser库的使用及遇到的坑
Feb 12 #Python
Python制作春联的示例代码
Jan 22 #Python
Python制作表白爱心合集
You might like
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
python Flask实现restful api service
2017/12/04 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
如何通过python计算圆周率PI
2020/11/11 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
安全技术说明书
2014/05/09 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
Python  lambda匿名函数和三元运算符
2022/04/19 Python