小程序自动化实践中问题

环境:

miniprogram-automator@0.10.0

jest@26.6.3

问题:

建议
  • 整个测试项目可以独立于小程序项目之外

  • jest同步执行多个测试文件会出错,需要加参数--runInBand

  • 不分多个文件测试小程序

    • automator.launch要执行多次,容易导致测试出现多种问题
    • automator.launch无法在多个文件中共用变量
    • 引入其他文件导出方法传入it时,即使出错,测试也是通过的
  • 当测试点击按钮跳转时或者测试详情页面时,一定要注意判断条件

    • 按钮跳转可能是有条件的跳转,需要考虑,否则后面处理会有问题
    • 测试详情页面需要判断有列表,详情页内部的跳转页面需要多个判断条件,自己本身的条件+列表页有列表,否则后面处理会有问题
    • 依赖上一个it或者test的变量作为条件判断,不能直接写在下一个describe内(describe同步代码),需要写在it或者test的异步回调内部
automator.launch参数
automator.launch({
  cliPath: 'D:/微信web开发者工具/cli.bat', // 工具 cli 位置,如果你没有更改过默认安装位
  // 置,可以忽略此项,微信web开发者工具安装路径根目录下的cli.bat文件
  projectPath: '../wx_project', // 项目根目录文件地址
})
beforeAll钩子函数
  • 传入的函数可以是异步async函数
  • 建议在此钩子函数中执行automator.launch
  • beforeAll可以放到describe内部也可以放到外部,beforeAll作用于当前作用域
  • beforeAll的回调函数(异步)未执行完时 ,describe的回调函数就已经执行了,因此automator.launch返回的miniProgram不可以在describe中直接使用,需要放到it或者test的异步回调中使用
  • jest默认5s超时,但是微信web开发者工具启动打开很慢,因此需要beforeAll第二个参数timeout的毫秒值设置大一些
describe
  • 会创建一个块级作用域,回调函数不能是异步async函数
  • 可以嵌套it,test,expect、describe
  • 测试js文件中必须包含至少一个describe
  • describe不能放在automator.launch回调中
it,test,expect
  • it,test类似,it,test不能嵌套it、test,只能嵌套expect
  • it,test回调函数可以是异步async函数,第二个参数是timeout,某些时候建议设置大一些
  • expect不能嵌套
  • expect可以传入await button.wxml()
Page.waitFor使用
  • 页面跳转、点击按钮主动触发跳转等等,都需要等待时间再进行下一步操作,这个等待时间不好确定,有时候短有时候长,如果给waitFor传入时间就很容易导致下面操作(如Page.data获取数据等)报错,因此进行下面操作

    • string 类型,那么该参数会被当成选择器,当该选择器选中元素个数不为零时,结束等待。

    • Function 类型,那么该参数会被当成断言函数(async函数),当该函数返回真值时,结束等待

    await testPage.waitFor(async () => {
       return (await testPage.data('loading')) == false
    })
    

page.$获取元素

  • 需要页面进入并且加载完,注意Page.waitFor使用
  • 如果获取的元素是组件,注意获取的元素是否正确。例如:获取按钮点击,组件是van-button,按照组件van-button的class获取之后执行tap(),并没有效果,需要获取van-button组件中的button才可以

参考链接:

官方文档-小程序自动化

jest官方文档

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值