5.2.3 完成WebSocket接口测试以及扩展之前框架的功能
Python提供了WebSocket的协议库,因此只要完成客户端调用代码的编写,就可以进行WebSocket接口测试了。代码清单5-4展示了一个WebSocket接口(以http://www.websocket.org/ demos/echo/为例)的调用代码。
代码清单5-4
上述代码和HTTP接口的有些类似,都先和请求建立连接,之后再发送信息。区别是,WebSocket由于是长连接,因此需要人为地建立和关闭连接,而HTTP不需要进行这种操作。我们要做的就是不断地编写测试脚本,然后抽象出Common类,随着Common类越来越丰富,便可形成私有的测试框架。WebSocket的通用方法也需要放入Common类中。
在前面封装的Common类的构造函数中,添加一个API类型的参数,以指明操作的是什么协议的接口,参数值http代表HTTP接口,参数值ws代表WebSocket接口。WebSocket是长连接,因此需要在Common类的析构函数中添加用于关闭ws连接的代码以释放WebSocket长连接。根据前面介绍的交互流程,实现代码参见代码清单5-5。
代码清单5-5
上述脚本是一些超级工具的集合,类似于机器猫的“万能口袋”,大家只需要不断积累就可以了。使用Common类对上述流水账似的脚本进行改造,如代码清单5-6所示。
代码清单5-6
改造后的代码让我们充分体验到了测试框架的魅力。测试框架能让代码变得更加简洁和易读。在将WebSocket封装到之前的测试框架后,我们便有了一个既支持HTTP又支持WebSocket的接口测试框架。随着不断积累新协议,测试框架会越来越强大,我们的秘密武器库也会不断扩充。测试框架的不断完善,使得接口测试工作越来越简单,测试速度也越来越快。在实现对测试能力的支持后,我们应该回过头继续补充协议的基础知识,因为只有这样我们才能“既知其然,也知其所以然”。