0
收藏
评论

玩转小程序mock测试

一款无污染开发代码,且小程序各个角色都可以简单快速使用的mock工具

小程序项目过程中 测试或者其他的体验同学经常需要一个能辅助快速mock小程序后台多种数据能力的工具,且尽可能少的污染开发代码,学习成本低,而现有的工具大都无法满足这几点需求,故笔者研究了一番,也小有收获,分享给大家,若有错误之处,请随时指出。
-工具调研
解决前后端分离的工具比较多,总体分为三类:
1、 Mock Server类工具:开源的有Easy Mock等在线工具,或者自己写同类的本地工具;
2、 利用mockjs在本地代码中mock对应接口返回;
3、 利用fiddler等调试代理工具修改返回内容;
这些工具是否能满足我们测试的需求呢,分析下现有工具的优缺点:

以上几类工具虽然各有千秋,但是都不太适合合作伙伴同学的测试简单便捷使用。
- 新mock工具方案
mock方案
微信官方提供了WxMock工具可以比较方便本地mock小程序接口的返回值;而我们需要的是方便测试同学测试小程序不同返回数据的逻辑和展示:
1、 学习成本低;
2、 对小程序代码修改影响小;
3、 测试可控制指定数据组合,不依赖后台和小程序开发;
为满足以上需求,设计新的mock工具基本方案如下:

a) 测试同学通过控制配置文件,参数/参数组合,测试小程序客户端逻辑和UI展示,只需知道接口的作用和关键字段意义;
b) 改造WxMock.js,实现自动用配置文件中的url,模糊匹配所有请求,并修改返回值;
c) 若后台接口可用的情况,配置文件可只配置关键字段返回值;
d) 可以选择使用UI展示配置的case列表,配置有一定的复用性;
e) 不使用UI时,对开发的代码影响极小,切换成本很小;
f) 无需开发过多的配合即可完成测试;
g) 可方便覆盖较多的参数组合,与后台完全独立;

  • MockCase数据格式设计
    每一个TestCase包含三部分内容:
    1、 测试url:一般小程序的url由baseurl(合法请求域名)+ api名称组合而成,对于post类请求会稍有不同,url结尾会带上参数,我们的mock工具针对url做前缀匹配,测试时无需区分GET和POST类型请求。
    2、 测试用例名testname:方便测试同学区分和认识自己的测试用例。
    3、 需要的返回数据response:可塞入完整的返回内容,也可以指定关键的部分字段内容。
    一个测试url可以有多个case。
    测试用例示例如下:

    - 新mock工具实现
    1、 改造WxMock接口
    a) 通过读取配置文件获取需要mock的url和mock的内容
    b) 通过hook微信的wx.request方法,在得到response后,如果对应的请求在配置文件中有相关信息,那么就根据配置文件的mock数据对response进行修改。
    c) 修改的算法是递归替换

    2、 实现配置文件读写
    微信开发者平台为开发者开放了一个专门的本地用户目录,开发者有完全的读写权限,通过wx.env.USER_DATA_PATH可获取到目录;
    更多内容参考:https://developers.weixin.qq.com/minigame/dev/tutorial/ability/file-system.html
    实现配置文件内容读写操作,导出获取数据接口给mock模块。关键方法片段如下:

    - 新工具使用
    1, 在page中增加test_config页面,并为它提供入口(可选)
    2, 把WxMock.js和readconfig.js引入到项目中,在app.js中增加启动mock的代码

    3, 把mockCase配置文件放入到小程序开放目录下。MockCase配置 见“ MockCase数据格式设计”章节
    ${wx.env.USER_DATA_PATH}:/sdcard/tencent/MicroMsg/wxanewfiles/微信用户32位MD5/
    4, 小程序启动后即可完成数据mock;如需要手动指定MockCase配置的可以打开配置页进行选择配置。
    mock工具适用于哪些角色和场景
    1)、开发同学自测和调试,无需依赖后台,或者自己hardcode在代码中;
    2)、测试同学
    3)、UI较复杂且与后台依赖较多的需求。
    欢迎随时指正讨论
最后一次编辑于  01-15  (未经腾讯允许,不得转载)
复制链接赞 0收藏投诉评论