资讯专栏INFORMATION COLUMN

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

姘存按 / 2260人阅读

摘要:断言断言是什么模块提供了一组简单的断言测试,可用于测试不变量。环境是他们不必设置大量配置的环境,而是开发人员可以编写代码并从测试中获得即时反馈的地方。每当测试时,结果将出现在您的拉取请求中,您的历史记录将在其控制面板中提供。

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测试

暂时还没写

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102554.html

相关文章

  • 参加第二届前端开发者年度大总结

    摘要:代表公司去参加今年的第二届前端开发者年度大会,散会的时候,技术老大问我,今天感觉怎么样,有什么收获,当时就零零碎碎的回答了一些,不算完美趁着还记得点什么,在这里做个自我回顾总结,谨代表个人见解,有不当之处,或若涉及图片隐私或者其它问题,烦请 代表公司去参加今年的 第二届前端开发者年度大会,散会的时候,Team 技术老大问我,今天感觉怎么样,有什么收获,当时就零零碎碎的回答了一些,不算完...

    solocoder 评论0 收藏0
  • 【C++核心编程】黑马程序员学习笔记(未完)(更新于2021/9/23)

    摘要:只读目的是防止程序意外地修改了它的指令。全局区存放全局变量静态变量和常量除了修饰的局部变量。程序结束时由操作系统释放。由编译器自动分配和释放。注意不要返回局部变量的地址。 ...

    zhongmeizhi 评论0 收藏0
  • ICML 2015压轴讨论总结:6大神畅谈深度学习的未来

    摘要:年的深度学习研讨会,压轴大戏是关于深度学习未来的讨论。他认为,有潜力成为深度学习的下一个重点。认为这样的人工智能恐惧和奇点的讨论是一个巨大的牵引。 2015年ICML的深度学习研讨会,压轴大戏是关于深度学习未来的讨论。基于平衡考虑,组织方分别邀请了来自工业界和学术界的六位专家开展这次圆桌讨论。组织者之一Kyunghyun Cho(Bengio的博士后)在飞机上凭记忆写下本文总结了讨论的内容,...

    netScorpion 评论0 收藏0
  • 五位专家跟你讲讲为啥Python更适合做AI/机器学习

    摘要:研究人员和机器学习的作者对于数学和面向数据的人来说,非常容易使用。这对于机器学习和领域的工作是非常重要的。高级脚本语言非常适合人工智能和机器学习,因为我们可以快速移动并重试。 摘要: 为什么Python会在这股深度学习浪潮中成为编程语言的头牌?听听大牛如何解释吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...

    刘德刚 评论0 收藏0

发表评论

0条评论

姘存按

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<