以Python为基础的REST(JSON为交换数据)接口的测试框架设计(二)-JSON的修改
在第一章节的需求说明中,需要实现下面两点。本章节介绍下面两个功能的实现:
1、测试数据和测试用例分离,即要求每个测试用例从文件中读取JSON数据,然后发送
2、要具有修改JSON数据的能力,可以根据给定的变量名称和值,修改从文件中读取的JSON数据,然后发送提供JSON消息的MOD方法(修改JSON消息中的某个字段)
读取文件比较简单,读取出来的JSON数据是字符串形式的,可以利用Python的JSON库来进行转换,把字符串类型转换为字典类型,然后来访问每个字典的值。给指定的索引赋值。
当前调试环境为:python 2.7版本,后续无特性说明,都以此版本为准。
下面是实现代码:
# -*- coding: encoding -*- import json import types f =file('testjson2.json','r') sjson ='' while True: myjson=f.readline() if len(myjson) ==0: break sjson= sjson + myjson f.close() print 'sjson type is:',type(sjson) mjson = json.loads(sjson) print 'sjson change is',type(mjson) print 'the length os mjson is ',len(mjson) json_len = len(mjson) sub = 'brief' print mjson['brief'] mjson['brief'] = 'modify' print mjson['brief'] print mjson
testjson2.json内容如下:
1 { 2 "brief": "ooooo", 3 "class_extid": 13, 4 "create_time": 1131783174, 5 "face_id": 4, 6 "flag ": 6777217, 7 "flag_ext": 0, 8 "level": 0, 9 "max_member": 100, 10 "memo": "m~F~M0m~Zm~@~B", 11 "name": "10502", 12 "option": 2, 13 "ul": [ 14 { 15 "flag": 4, 16 "u": 285 17 }, 18 { 19 "flag": 4, 20 "u": 35 21 } 22 ] 23 }
运行输出如下:蓝色字体为修改后的输出。
sjson type is: <type 'str'>
sjson change is <type 'dict'>
the length os mjson is 12
ooooo
modify
{'ul': [{'flag': 4, 'u': 285}, {'flag': 4, 'u': 35}], 'name': '10502', 'level': 0, 'memo': 'm~F~M0m~Zm~@~B', 'brief': 'modify', 'max_member': 100, 'create_time': 1131783174, 'flag_ext': 0, 'class_extid': 13, 'face_id': 4, 'flag ': 6777217, 'option': 2}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?