以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}

posted @ 2012-12-09 21:40  MyStitch  阅读(765)  评论(0编辑  收藏  举报