前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用python构建Mock系统

利用python构建Mock系统

作者头像
py3study
发布2020-01-06 18:08:19
5600
发布2020-01-06 18:08:19
举报
文章被收录于专栏:python3

之前的一篇博文提到过利用打算利用python写个mock系统以方便测试,主要是因为所测系统A依赖于其他系统的输入,两个系统属于不同的项目且开发和测试成员都不同,单独针对A系统进行测试时由于A的依赖性导致很多测试点无法覆盖且由于分属不同项目联调成本也较高,于是乎想到通过Mock的方式规避此问题,由于小弟之前只会java,所以第一时间想到的是用java编写一个mock系统,但是被测系统是C++实现的,那么就涉及到网络字节序的转换问题,研究了半天后开写,接收到的请求死活不能正确解析出来,而且发现代码还写了不少,头大,旁边同事在研究python,在他的强烈推荐下我就考虑怎么用python去实现,利用业余时间突击学习了一个月的python,终于大功告成,下面记录一下我的学习历程和收获!

1.迅速翻阅《python核心编程》第一部分,以及第二部分的“网络编程”章节(因为涉及两个系统的通信),由于有java的经验上手还是比较快的。

2.根据书中内容用python编写个简单的Socket服务端,能接收到被测系统的请求;这时谷歌上搜到python已经有SocketServer模块,只要引入它及它的子类StreamRequestHandler并重写handler方法(具体请求处理)。于是接下来考虑handler方法的具体实现,主要分两部分:1.请求的接收2.请求结果的返回;第一部分查看python官方文档轻松实现,第二部分先根据两个系统间的请求和反馈格式拼装内容,拼装完后考虑到python没有Byte类型,如何将拼装的内容转化为字节流并且让C++实现的系统能够识别呢?网上搜了搜,发现有struct这个好东西!利用它的pack方法可以将内容转换成指定的格式,pack方法有两个参数,一是转换后的格式定义,二是待转换的内容,下面贴上格式定义符与C++和python中的对应关系:

> 格式

c类型

python类型

> x

char

无(表示填充字节)

> c

char

长度为1的字符串

> b

signed char

integer

> B

unsigned char

integer

> h

short

integer

> H

unsigned short

integer

> i

int

integer

> I

unsigned int

long

> l

long

integer

> L

unsigned long

long

> q

long long

long

> Q

unsigned long long

long

> f

float

float

> d

double

float

> s

char[]

string

> p

char[]

string

> P

void*

integer

> 字符

字节顺序

长度和对齐方式

> @

native

native

> =

native

standard

> <

little-endian

standard

> >

big-endian

standard

> !

network (= big-endian)

standard

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档