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实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
python实现一次创建多级目录的方法
May 15 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
python迭代dict的key和value的方法
Jul 06 Python
python实现随机梯度下降法
Mar 24 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python-jenkins 获取job构建信息方式
May 12 Python
python statsmodel的使用
Dec 21 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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 使用redis简单示例分享
2015/03/05 PHP
php获取图片信息的方法详解
2015/12/10 PHP
php实现word转html的方法
2016/01/22 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
Javascript - HTML的request类
2006/07/15 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python基础之文件读取的讲解
2019/02/16 Python
java判断三位数的实例讲解
2019/06/10 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Python实现密码薄文件读写操作
2019/12/16 Python
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
上课迟到检讨书100字
2014/01/11 职场文书
班班通项目实施方案
2014/02/25 职场文书
党支部公开承诺书
2014/03/28 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
辩护词格式
2015/05/22 职场文书
运动会100米加油稿
2015/07/21 职场文书
汽车销售合同文本
2019/08/08 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技