美文网首页
使用Jasmine实现微信小程序自动化测试

使用Jasmine实现微信小程序自动化测试

作者: 凉茶子 | 来源:发表于2019-09-29 17:46 被阅读0次

微信小程序自动化测试官方地址:

https://developers.weixin.qq.com/miniprogram/dev/devtools/auto/quick-start.html

微信官方使用的是jest作为测试框架进行的演示,因为自己对jest不熟,平时使用的测试框架是karma+jasmine,所以自己捣鼓了一下午,使用jasmine搭建了微信小程序自动化测试框架,供大家参考。文中如有纰漏,请不吝赐教。

1. 首先在自己的小程序下使用 npm init 转变为node项目,这样我们就可以使用npm工具进行打包工具的下载。

2. 安装小程序自动化SDK:
npm i miniprogram-automator --save-dev

3. 小程序开启cli/http调用功能,位置:微信开发者工具->设置->安全设置->服务端口选择开启

4. 安装jasmine:npm i jasmine --save-dev (这里安装在本地,你也可以全局安装)

  1. 初始化项目 jasmine init,将会生成一下目录:
image

6. 在spec目录下添加测试脚本:

test.spec.js

const automator = require('miniprogram-automator')
describe('index', () => {
  originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
  jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000
  let miniProgram
  let page
  beforeAll(async (done) => {
    miniProgram = await automator.launch({
      cliPath: 'path/to/cli', // 工具 cli 位置,如果你没有更改过默认安装位置,可以忽略此项
      projectPath: 'path/to/project', // 项目文件地址
    })
    page = await miniProgram.reLaunch('/pages/index/index')
    await page.waitFor(5000)
    done()
  })
  afterAll(async () => {
    await miniProgram.close()
    jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
  })
  it('desc', async (done) => {
    const desc = await page.$$('.intro_index')
    expect(desc.length).toBe(4)
    expect(await desc[0].text()).toContain('xxxxxx')
    done()
  })
  it('button', async (done) => {
    const lists = await page.$('.login_redirect')
    expect(await lists.text()).toContain('xxxxxx')
    done()
  })
})

这里有一点需要澄清一下,如果你的微信开发者工具没有安装在默认目录下面,请更改cliPath的地址,projectPath最好也要改为你实际项目的地址

7. 执行 node node_module/jasmine/bin/jasmine.js,如果报时间超时的问题,请修改jasmine.DEFAULT_TIMEOUT_INTERVAL的值,因为众所周知的问题,建议大家把这个时间改长一点。

到这里,jsamine就已经集成好了,但因为自己强迫症在作祟,又做了以下修改:

1. 更改package.json文件,修改

 "scripts": {
  "test": "node node_modules/jasmine/bin/jasmine.js"
}

这样每次进行测试的话直接调用npm test就可以了

2. 添加jasmine-spec-reporter的支持。

因为在cli中正确信息只显示小绿点,看惯了karma的提示,很不爽,于是就更改了显示问题

1)npm install jasmine-spec-reporter --save-dev 安装依赖

2)spec/helpers文件目录下面添加reporter.js,代码如下:

const SpecReporter = require('jasmine-spec-reporter').SpecReporter;

 jasmine.getEnv().clearReporters();              // remove default reporter logs

jasmine.getEnv().addReporter(new SpecReporter({  // add jasmine-spec-reporter

    spec: {
      displayPending: true
    }
}));

好了,现在在你的shell中启动npm test就可以看到测试啦。

其他遇到的问题:
jasmine异步调用的问题:
beforeAll,afterAll, it 等有需要用到异步调用的地方首要添加done参数,其次在调用完毕的地方执行防范done()即可,具体用法请参考官方文档

文章选自使用Jasmine实现微信小程序自动化测试

相关文章

网友评论

      本文标题:使用Jasmine实现微信小程序自动化测试

      本文链接:https://www.haomeiwen.com/subject/mrqqpctx.html