使用
- 安装
npm install -g cf-auto
- 项目根目录下添加配置文件: auto-config.js
mocdule.exports = {
fileType: "ts",
auto: "auto",
dist: "dist",
temp: "auto_temp",
serverPort: "12345",
liveReloadPort: "12346",
target: "http://localhost:4400/?{{sid}}&auto_path={{path}}",
taskList: [
{
sid: "9f7026db-f762-4709-a1ed-35c689625164",
path: "basic/index",
query_params: {}
}
],
replacements: {
"import * as cf from '../app/services/debug.js';": "var cf = window.CF;"
}
}
测试启动时将读取配置文件,对每个任务进行单独的测试,并报告测试结果。
- 编写测试脚本
- 测试脚本使用es6模块化编写
- src/assist下面的两本文件:test.js和tool.js将会被注入到测试网站中assist目录下,
测试脚本可以直接import这两本中export过的变量
- 在测试项目中生成到temp目录中的结构将如下:
temp
| assist // 这个就是src/assist转移过去的,
| // 里面的文件将会以模块方式注入到被测试网站中
|------test.js
|------tool.js
| tasks // 这个就是auto目录中的测试脚本转移到了这里
| chai.js // 测试断言库,将会注入到被测试网站中
| index.html // 启动测试的页面,将会以iframe的方式打开每个测试任务
| index.js // 启动页面的依赖脚本
- 测试脚本中可以从assist/test中引入tester开始测试,引用路径关系以生成后的temp目录为准
import {tester, deepEqual} from '../assist/test'
tester.init('title')
.test('测试1',(assert) => {
assert.equal(1, 2, '1===2')
deepEqual({a:{a:1}}, {a:{b:1}}, assert, 'deep equal');
})
.test('测试2',(assert) => {
assert.equal(1, 2, '1===2')
return new Promise(resolve => {
setTimeout(resolve, 2000)
})
})
.test('测试3',(assert) => {
assert.equal('1', '1', '1===1')
})
.skip('测试4',(assert) => {
})
.todo('测试5',(assert) => {
})
- 写好了测试脚本后,运行
cf-auto
即可开始跑起测试
- 将通过webdriver启动chrome进行测试,当测试完毕后关闭浏览器并在控制台中会报告结果。
- 如果加了--watch参数,则会运行完测试后浏览器不会被关闭,会一直处于等待状态,并监听
项目业务代码变化和测试脚本变化,当发生任何变化的时候将重新运行测试,浏览器测试页面中
也会显示测试结果。
- 如果接了--display参数,则测试页面中将显示每个测试iframe中的真实运行情况