环境:
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才可以