Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1203495
  • 博文数量: 185
  • 博客积分: 495
  • 博客等级: 下士
  • 技术积分: 1418
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-02 15:12
个人简介

治肾虚不含糖,专注内核性能优化二十年。 https://github.com/KnightKu

文章分类

全部博文(185)

文章存档

2019年(1)

2018年(12)

2017年(5)

2016年(23)

2015年(1)

2014年(22)

2013年(82)

2012年(39)

分类: Python/Ruby

2014-01-06 17:38:02

        在功能测试或集成测试中,用json造输入数据,然后moc测试脚本将json转化为protobuf发送给被测试模块或服务,是非常常见的功能测试手段。
        如果测试脚本用Python来写的话,一般的做法是用的Python调用json模块中函数解析json文件,然后新建protobuf对象,依次填写各字段,然后发送出去。
        当然如果愿意造上面的轮子也没关系,如果想偷懒也是可行的,脚本就为你干这事提供了温床,下面会介绍这个过程:
1、造json文件,内容如下:
        #vi testjson2pb.json
        {
            "name":"scq",
            "age":30,
            "work_unit":"taobao",
            "class_mate":[
                {
                    "name":"jim",
                    "age":30
                }
            ]
        }

2、造protobuf文件,内容如下:
        #vi testjson2pb.proto
        //class mate
        package json2pb;
        message PersonInfo {
            //my name
            required string name = 1;
            //my age
            optional int32 age = 2;
            //my work unit
            optional string work_unit = 3;
            message ClassMate {
                //name
                optional string name = 1;
                //age
                optional uint32 age = 2;
            }
            repeated ClassMate class_mate = 4;
        }

3、生成protobuf对应python文件:
        #protoc -I=. --python_out=. testjson2pb.proto
        testjson2pb_pb2.py

4、编写测试例子,具体如下:
        #vi testjson2pb.py
        -------------------------------------------------------------------------------------------------
        #!/usr/bin/env python
        # coding=utf-8

        import sys
        import logging
        import os
        import time
        import string
        import pbjson
        import simplejson
        import testjson2pb_pb2

        def main():
            f = file("testjson2pb.json")
            s = simplejson.load(f)
            f.close
            t = pbjson.dict2pb(testjson2pb_pb2.PersonInfo, s)
            print t

        if __name__  ==  "__main__":
            main()

5、执行脚本,结果如下:
        #python testjson2pb.py
        
        是不是很简单啊,自从有了这个脚本,再用不用担心人肉从json生成protobuf的问题了
        
      
阅读(9443) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~