现在在做的一个游戏项目开发时需要使用unity客户端进行调试,但身为一个服务端程序员,尝尝需要先行开发以便客户端调试,之前的做法是开发完成后,写好对应的GM指令,不够便捷。所以萌生一个想法,写一个测试客户端,这样不需要更新unity客户端,等待漫长的编译过程,在工作的后期又看到了pytest这个库,尝试结合起来做一个自动化协议测试的东西。
http://blog.youkuaiyun.com/q_yang1987/article/details/52194860之前写的这篇文章描述的就是这个项目的私有协议的python序列化反序列化模块实现,期间对FixSizedString类型字段做了一些优化,主要方便直接赋值字符串而不用使用类似set_str这样的函数。
先介绍一下pytest这个东西,官网地址http://docs.pytest.org/en/latest/contents.html,pytest功能丰富:
1. hack了assert,如果断言失败可以进行debug(pdb),如果测试用例有输出也会打印出来,反之,如果测试通过,则没有任何输出。
2. fixture,定义测试用例用到的参数(或者准确说是测试所需要的基础设施),可以对这些基础设置设置初始化步骤以及析构步骤,对于协议测试,一个client一般都需要先进行登录,然后测试,最后登出,这些重复的代码只需要在fixture中写一遍就好,同时fixture也可