Comparing version 2.0.0 to 2.0.1
{ | ||
"name": "cf-auto", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "test runner", | ||
@@ -5,0 +5,0 @@ "repository": { |
150
readme.md
使用 | ||
1. 安装 | ||
``` | ||
npm install -g cf-auto | ||
yarn add cf-auto -D | ||
``` | ||
2. 项目根目录下添加配置文件: auto-config.js | ||
``` javascript | ||
mocdule.exports = { | ||
// 测试文件类型,默认为js | ||
fileType: "ts", | ||
2. 项目根目录下添加配置文件: auto-config.js,以下为配置示例: | ||
```javascript | ||
mocdule.exports = { | ||
// 启动前要运行的任务 | ||
beforeServe:() => {}, | ||
// 测试文件类型,默认为js | ||
fileType: "ts", | ||
// 测试脚本所在目录 | ||
@@ -21,2 +25,4 @@ auto: "auto", | ||
serverPort: "12345", | ||
// 运行测试前先要抛弃的页面 | ||
prePage: "http://localhost:10003/login.html", | ||
// 自动测试监听状态下的自动更新监听端口 | ||
@@ -35,73 +41,77 @@ liveReloadPort: "12346", | ||
// 可选的参数,将会解开后拼接到target url之后 | ||
query_params: {} | ||
} | ||
query_params: {}, | ||
}, | ||
], | ||
// 自定义替换,配置到这里的键值对,在编译测试任务时,测试脚本中的对应键的内容都会被替换为值的内容 | ||
// 自定义替换,配置到这里的键值对,在编译测试任务时,测试脚本中的对应键的内容都会被替换为值的内容 | ||
replacements: { | ||
"import * as cf from '../app/services/debug.js';": "var cf = window.CF;" | ||
} | ||
} | ||
"import * as cf from '../app/services/debug.js';": "var cf = window.CF;", | ||
}, | ||
}; | ||
``` | ||
测试启动时将读取配置文件,对每个任务进行单独的测试,并报告测试结果。 | ||
3. 编写测试脚本 | ||
* 测试脚本使用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目录为准 | ||
``` javascript | ||
import {tester, deepEqual} from '../assist/test' | ||
// init可以配置一下这才整个测试的标题 | ||
// 多次init的话将以最后一次为准 | ||
tester.init('title') | ||
// 链式调用开始测试 | ||
// assert是chai单元库的的assert风格断言对象 | ||
// deepEqual是自定义的一个深对比断言方法,相对于assert.deepEqual来说 | ||
// 前者会具体深入报考那一层那个属性没有断言成功,利于观察,后者则不会 | ||
.test('测试1',(assert) => { | ||
assert.equal(1, 2, '1===2') | ||
deepEqual({a:{a:1}}, {a:{b:1}}, assert, 'deep equal'); | ||
}) | ||
// 测试可以返回一个promise,如果返回了promise | ||
// 则后续的测试将会等待promise被resolve之后才执行 | ||
// 这种方式在模拟人为操作的时候, | ||
// 或者测试间状态互相依赖的场合非常有用 | ||
.test('测试2',(assert) => { | ||
assert.equal(1, 2, '1===2') | ||
return new Promise(resolve => { | ||
setTimeout(resolve, 2000) | ||
}) | ||
}) | ||
// 这个测试将等到'测试2'执行完两秒后才被执行 | ||
.test('测试3',(assert) => { | ||
assert.equal('1', '1', '1===1') | ||
}) | ||
// 暂时跳过的测试 | ||
.skip('测试4',(assert) => { | ||
// 这个测试将会被跳过 | ||
}) | ||
// 将要做的测试 | ||
.todo('测试5',(assert) => { | ||
// 这个测试也会被跳过 | ||
}) | ||
``` | ||
- 测试脚本使用 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 目录为准 | ||
```javascript | ||
import { tester, deepEqual } from "../assist/test"; | ||
// init可以配置一下这才整个测试的标题 | ||
// 多次init的话将以最后一次为准 | ||
tester | ||
.init("title") | ||
// 链式调用开始测试 | ||
// assert是chai单元库的的assert风格断言对象 | ||
// deepEqual是自定义的一个深对比断言方法,相对于assert.deepEqual来说 | ||
// 前者会具体深入报考那一层那个属性没有断言成功,利于观察,后者则不会 | ||
.test("测试1", (assert) => { | ||
assert.equal(1, 2, "1===2"); | ||
deepEqual({ a: { a: 1 } }, { a: { b: 1 } }, assert, "deep equal"); | ||
}) | ||
// 测试可以返回一个promise,如果返回了promise | ||
// 则后续的测试将会等待promise被resolve之后才执行 | ||
// 这种方式在模拟人为操作的时候, | ||
// 或者测试间状态互相依赖的场合非常有用 | ||
.test("测试2", (assert) => { | ||
assert.equal(1, 2, "1===2"); | ||
return new Promise((resolve) => { | ||
setTimeout(resolve, 2000); | ||
}); | ||
}) | ||
// 这个测试将等到'测试2'执行完两秒后才被执行 | ||
.test("测试3", (assert) => { | ||
assert.equal("1", "1", "1===1"); | ||
}) | ||
// 暂时跳过的测试 | ||
.skip("测试4", (assert) => { | ||
// 这个测试将会被跳过 | ||
}) | ||
// 将要做的测试 | ||
.todo("测试5", (assert) => { | ||
// 这个测试也会被跳过 | ||
}); | ||
``` | ||
4. 写好了测试脚本后,运行`cf-auto`即可开始跑起测试 | ||
+ 将通过webdriver启动chrome进行测试,当测试完毕后关闭浏览器并在控制台中会报告结果。 | ||
+ 如果加了--watch参数,则会运行完测试后浏览器不会被关闭,会一直处于等待状态,并监听 | ||
项目业务代码变化和测试脚本变化,当发生任何变化的时候将重新运行测试,浏览器测试页面中 | ||
也会显示测试结果。 | ||
+ 如果接了--display参数,则测试页面中将显示每个测试iframe中的真实运行情况 | ||
- 将通过 webdriver 启动 chrome 进行测试,当测试完毕后关闭浏览器并在控制台中会报告结果。 | ||
- 如果加了--watch 参数,则会运行完测试后浏览器不会被关闭,会一直处于等待状态,并监听 | ||
项目业务代码变化和测试脚本变化,当发生任何变化的时候将重新运行测试,浏览器测试页面中 | ||
也会显示测试结果。 | ||
- 如果接了--display 参数,则测试页面中将显示每个测试 iframe 中的真实运行情况 | ||
- 添加--filter参数,可以配置taskList中的path名称来指定只测试该path对应的测试 |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
24396
116