自动化测试(未完,后续学习之后会补充更具体的)

6次阅读

共计 3356 个字符,预计需要花费 9 分钟才能阅读完成。

Node assert (断言)
断言是什么
assert 模块提供了一组简单的断言测试,可用于测试不变量。
存在严格模式(strict)和遗留模式(legacy),但建议仅使用严格模式。
简单说就是用来做测试的
严格模式的引入: const assert = require(‘assert’).strict;
遗留模式的引入: const assert = require(‘assert’)
API 学习
1. assert.equal(actual, expected[, message])
message 是可选属性, 报错抛出 message
严格模式:assert.strictEqual
注意: 只能判断基本数据类型, 引用类型不可以判断
assert.equa(1,1) // true 通过
assert.equa({a:1},{a:1}) // false 未通过
equal 表示 ==
strictEqual 表示 ===
// 所以要注意隐式转换的问题比如说
assert.equa(“1”,1) // true 通过
assert.strictEqual(‘1’,1) // false 报错
2. assert.deepEqual(actual, expected[, message])
严格模式: assert.deepStrictEqual(actual, expected[, message])
解释: 判断期望值和实际值是否相等, 可判断可枚举属性
具有 equal 函数的相同功能, 也能判断对象, 数组
assert.deepEqual([“1”,2],[1,2]) // 通过
// 严格模式下
assert.deepStrictEqual([“1”,2],[1,2]) // 未通过
// 循环在比较数组中的每一个元素

主要就是是使用这 2 个严格模式
Mocha 测试框架
Mocha 是一个在 Node.js 和浏览器上运行的功能丰富的 JavaScript 测试框架,使异步测试变得简单而有趣。
Mocha 测试以串行方式运行,允许灵活准确的报告,同时将未捕获的异常映射到正确的测试用例
首先是安装
建议使用项目里面安装 mocha, 不然全部安装使用会影响别的项目. 记得这是开发依赖
npm install –save-dev mocha
然后创建一个 test 文件夹, 所有的测试文件放在 test 下
编写测试
接下来我们可以编写测试案例了, 新建一个 add.js 代码如下
module.exports = function (a,b) {
return a+b;
};
下面我们就对这个函数进行测试在 test 文件夹下面新建一个 test.js 文件上面我们已经在项目中安装了 mocha
const assert = require(‘assert’);
const add = require(‘../add.js’);
describe(‘#add’, () =>{
it(‘sum(3,5) should return 8’, () => {
assert.strictEqual(sum(3,5), 8);
})
})

这时候我们来看一下 deescribe 这个函数 可以任意嵌套多作为一个组, 直白点就是给你当注释用的 it 函数是一个测试用例 你可以下多个 放在 it 里面
现在我们要配置测试, 我们在 package.json 里面配置一个 test 命名 对应 mocha 就可以了.
运行 npm test 那么一个测试就完成了
还有一些生命周期的函数, 可以把下面这段代码添加进
describe(‘#add’, () =>{
before(function () {
console.log(‘before:’);
});

after(function () {
console.log(‘after.’);
});

beforeEach(function () {
console.log(‘ beforeEach:’);
});

afterEach(function () {
console.log(‘ afterEach.’);
});
it(‘sum(3,5) should return 8’, () => {
assert.strictEqual(sum(3,5), 8);
})
})

可以看一下这个生命周期, 了解一下.
异步测试
用 mocha 测试一个函数是非常简单的,但是,在 JavaScript 的世界中,更多的时候,我们编写的是异步代码,所以,我们需要用 mocha 测试异步函数。
这里涉及一个新的知识点 async 函数, 可能有的小伙伴不太会, 这里啰嗦一下, 因为我也不太懂
async 函数
我理解的 async

以前我们使用 callback。

后来我们使用 Promise。

现在我们使用 Async/Await。

Async – 定义异步函数 (async function someName(){…})
– 自动把函数转换为 Promise
– 当调用异步函数时,函数返回值会被 resolve 处理
– 异步函数内部可以使用 await

Await – 暂停异步函数的执行 (var result = await someAsyncCall();)
– 当使用在 Promise 前面时,await 等待 Promise 完成,并返回 Promise 的结果
– await 只能和 Promise 一起使用,不能和 callback 一起使用
– await 只能用在 async 函数中

修改函数如下
module.exports = async ()=>{
let num = await setTimeout(() =>{
return 1
console.log(1)
},1000)
return num
}

然后编写一个测试函数
const assert = require(‘assert’)
const sum = require(‘../add’)
describe(“#add”, () =>{
it(“ 测试异步 ”, async () =>{
let result = await sum()
console.log(result)
console.log(1)
})
})

运行 npm test 查看结果.
Http 测试 <font color=red> 暂时还没写 </font>

karma
Karma 的主要目标是为开发人员提供高效的测试环境。
环境是他们不必设置大量配置的环境,而是开发人员可以编写代码并从测试中获得即时反馈的地方。
因为获得快速反馈是让您富有成效和创造力的原因。
安装
建议的方法是在项目目录中本地安装 Karma(以及项目需要的所有插件)。
# Install Karma:
$ npm install karma –save-dev

# Install plugins that your project needs:
$ npm install karma-jasmine karma-chrome-launcher jasmine-core –save-dev

这将安装 karma,karma-jasmine,karma-chrome-launcher 和 jasmine- c 到 node_modules 当前工作目录,
也可以作为保存这 devDependencies 的 package.json,
所以,任何其他开发项目工作会只有这样做 npm install 才能得到所有这些依赖安装。
# Run Karma:
$ ./node_modules/karma/bin/karma start

官网建议安装一个全局的 方便命令
npm install -g karma-cli
如何集成到项目里面
Travis CI
Travis CI 是一种流行的持续集成服务,它与您的 Github 存储库集成,
可在推送代码时自动运行测试。通过向项目根目录添加一个简单的 YAML 文件来完成集成 ;
Travis 和 Github 负责其余的工作。每当测试时,Travis 结果将出现在您的 Github 拉取请求中,
您的历史记录将在其控制面板中提供。本文假设您已经拥有 Travis 帐户。

配置
首先是去 travis 官网去注册一下 用 GitHub 账号
然后回读取你的 GitHub 项目开源的, 里面有个设置 打开就好了.Travis 会在代码 push 时收到 GitHub 通知,然后自动获取最新代码,进行 CI。
但是我们还是需要编写一个.travis.yml 文件来告诉 Travis 一些项目信息
language: node_js

node_js:

– 0.4

– 0.6
前端的配置

package.json 里面要配置个命令
“scripts”: {
“test”: “mocha”
},

Mocha 已经安装过全局了
然后 push 的时候就自动触发 npm test

正文完
 0