MockServer的测试思想与实现(下篇)

发表于:2012-10-12 11:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  通过上面的代码就限制了do必须出现on后面,否则会提示Mock对象不支持do方法。同时如果只有on没有do,也不会创建新的mock。

  远程调用

  现在,我们的Mock Server已经可以启动运行了,但必须且只能在启动时指定mock行为,也就是说还不能动态更新配置。

  接下来就该RPC登场了,RPC是远程过程调用的简称,这里的远程指的是不同的进程,可能是同一台机器上的,也可能是位于不同机器上的,它们之间可以通过某种PIC(进程间通信)协议传递信息,比如socket。而RPC就是对PIC协议的再封装,把信息发送/接收的过程变成更简单易用的函数调用过程。

  本例中使用Python的第三方扩展库rpyc来实现RPC,这样就可以在CASE中动态的修改Mock Server的形为了。

def execute (code,service_name='MOCK_SERVER'):

    conn=get_online_connectiones(service_name)[-1]
    conn.root.execute(code)

if __name__=='__main__':

    execute(r"""Mock.on( any_package(), large_than(32), ).do( send_back('hello,world! come on ....'), clear_buf(), ).on( got('QUIT\n'), ).do( close_sock(), ).on( got('STOP\n'), ).do( stop_server(), )""")
    raw_input()

  在最开始的CASE中的mock_exectue函数,实际上就是对这里的execute的再包装而已。

  综述

  总结一下我们所实现的这个Mock Server的特点:

  ● 用事件驱动的方式描述行为

  ● 用函数来描述[条件]和[结果]

  ● 用DSL代替配置文件的解析

  ● 用RPC代替配置文件的分发和加载

  相比之传统定义上的Stub Server, Mock Server抛弃了死板的配置文件,将要行为描述与接口实现分离,更利于代码的复用,进一步简化桩程序的开发成本。

  (全文完)

44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号