Miniprogram-automator + Jest模式Miniprogram-automator 这个仅仅是小程序自动化的sdk,说直白些,仅提供了一些API,并不是真正意义上的测试框架,这意味着上述的代码仅仅是JavaScript的代码片段,而非真正意义上的自动化测试用例,要达到真正书写自动化测试用例,需要一款测试框架,该框架可以是市面上任意一款node.js的javascript框架 。miniprogram-automator负责操作小程序页面的信息,测试框架负责组织和断言 。
测试框架选取与安装
此处使用时下比较流行的facebook出品的一款测试框架Jest,该框架集成了众多框架的功能 。
npm i jest -g简单应用
代码片段
const automator = require('miniprogram-automator')describe('小程序自动化测试初体验', () => {let miniProgram beforeAll(async () => { miniProgram = await automator.launch({ cliPath: '/Applications/wechatwebdevtools.app/Contents/MacOS/cli', projectPath: '/Users/user/Desktop/miniprogram-quickstart-master/miniprogram-quickstart-master',}) }, 30000) it('测试微信用户座右铭是hello world', async () => { const page = await miniProgram.reLaunch('/pages/index/index') const user_motto = await page.$('.user-motto') expect(await user_motto.text()).toBe('Hello World') }) afterAll(async () => { await miniProgram.close() })})运行用例
将上述代码保存到quickstart.test.js中,然后运行命令如下:
jest quickstart.test.js测试结果如下
文章插图
代码讲解
此处仅讲解与纯miniprogram-automator模式不一样的代码部分 。
describe('小程序自动化测试初体验', () => {let miniProgram beforeAll(async () => { miniProgram = await automator.launch({ cliPath: '/Applications/wechatwebdevtools.app/Contents/MacOS/cli', projectPath: '/Users/user/Desktop/miniprogram-quickstart-master/miniprogram-quickstart-master',}) }, 30000)因为Jest集成了Mocha,chai,jsdom,sinon等功能,所以这些框架的语法都可以在Jest应用,describe此处就是起test suite的意义 。
beforeAll属于测试生命周期API的一种,用在所有测试用例开始前执行 。此方法可以进行一些测试初始化的操作 。
30000 属于设置的Jest的超时时间,因为工具项目窗口启动初次编译需要一定时长,Jest 默认 5 秒超时太短,所以需要修改如此 。
it('测试微信用户座右铭是hello world', async () => { const page = await miniProgram.reLaunch('/pages/index/index') const user_motto = await page.$('.user-motto') expect(await user_motto.text()).toBe('Hello World')? })此处属于具体的测试用例,可以用it,也可以用test关键字 。
toBe是matcher函数,使用expect和”matcher”函数结合验证属于具体的断言部分 。判断实际得到的结果跟预期结果是否一致 。
afterAll(async () => { await miniProgram.close()})afterAll也属于测试生命周期API的一种,用来在所有用例执行完毕后执行,此处可以进行一些清理收尾工作 。
注:本文是针对小程序快速启动模板项目https://github.com/wechat-miniprogram/miniprogram-quickstart 做的自动化测试 。
推荐阅读
- 高效的并发程序要如何写,Java程序员通过这几步简单做到
- 五种常用小程序开发语言
- 梦见老虎吃小孩,我去救人 女人做梦梦见老虎吃小孩
- 如何用js控制图片放大缩小
- 小叶苦丁茶似茶非茶作为礼仪之茶
- 怎样让后台小哥哥快速对接你的前端页面
- 多肉火祭适合什么盆 火祭适合用大盆还是小盆
- ck玫瑰金手表会掉色吗 小ck五金掉色正常吗
- 家庭存茶的小方法
- 阴毛有小虫子该去医院吗