javascript自动化测试入门(一)

单元测试框架

  • better-assert (TDD断言库)
  • should.js (BDD断言库)
  • except.js(BDD断言库)
  • chai.js (TDD 、 BDD双模断言)
  • jasmine.js (BDD断言库)
  • NodeJs本身集成 require(‘assert’)
  • Intern 一个大而全的单元测试框架
  • QUnit 一个游离在Jquery左右的测试框架
  • Macaca 一套完整的自动化测试解决方案(阿里巴巴)

BDD:Behaviour Driven Development 行为驱动开发
TDD:Test Driven Development 测试驱动开发

常见测试分类

1、单元测试
2、e2e测试
3、视觉回归测试
4、性能测试

需要自动化测试的理由

在此之前,自己没有在任何项目中使用过自动化测试,主要是工作内容迭代快周期短,完全没有时间去写测试用例,开发完成后就直接移交给测试同学进行测试,他们也是人工完成测试。但自动化的好处就在于,只要用例覆盖的全面,就能大大提高代码质量,减少一些容易忽略的bug,做完迭代修改,跑一遍测试用例,轻松做完回归,也能让自己放心不是。而且对于项目以后的维护和交接都提供了保障作用。

单元测试工具karma

这里简单介绍下karma工具的入门使用,首先保证有node环境,然后就是一顿插件要装

npm install karma-cli -g // 安装全局karma命令
// 安装jasmine断言库,无界面浏览器phantomJs,开发环境即可
npm install karma jasmine-core karma-jasmine karma-phantomjs-launcher -D

初始化karma

karma init

会看到下面一片选项

karma init

Which testing framework do you want to use ?
Press tab to list possible options. Enter to move to the next question.
> jasmine

Do you want to use Require.js ?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no

Do you want to capture any browsers automatically ?
Press tab to list possible options. Enter empty string to move to the next question.
> PhantomJS
>

What is the location of your source and test files ?
You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js".
Enter empty string to move to the next question.
>

Should any of the files included by the previous patterns be excluded ?
You can use glob patterns, eg. "**/*.swp".
Enter empty string to move to the next question.
>

Do you want Karma to watch all the files and run the tests on change ?
Press tab to list possible options.
> no

初始化完成后,会生成一个karma.conf.js的文件,这就是karma的配置文件,下面需要对配置文件做一个简单的修改

// Karma configuration
// Generated on Tue May 28 2019 00:10:18 GMT+0800 (GMT+08:00)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      './src/*.js',
      './test/*.spec.js'
    ],


    // list of files / patterns to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: false,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['PhantomJS'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: true,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}

在karma.conf.js同一目录下创建src和test文件夹,这里的路径与配置文件中file属性配置的路径一致就可以,然后在src中创建index.js,在test中创建index.spec.js

index.js代码如下:

function test (flag) {
    if (flag === 1) {
        return 'hello world';
    } else {
        return 'hello kitty';
    }
}

function sum (x, y) {
    return x + y;
}

index.spec.js的代码如下:

describe('index中包含的方法测试', function(){
    it('test方法测试', function(){
        expect(test(1)).toBe('hello world');
        expect(test(2)).toBe('hello kitty');
    });
    it('sum方法测试', function() {
        expect(sum(1, 2)).toBe(3);
    });
})

然后运行karma start或者把命令集成到package.json中

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "unit": "karma start"
  },

就可以运行npm run unit启动测试,可以得到下面的结果

karma start

28 05 2019 00:29:14.510:INFO [karma-server]: Karma v4.1.0 server started at http://0.0.0.0:9876/
28 05 2019 00:29:14.518:INFO [launcher]: Launching browsers PhantomJS with concurrency unlimited
28 05 2019 00:29:14.527:INFO [launcher]: Starting browser PhantomJS
28 05 2019 00:29:20.933:INFO [PhantomJS 2.1.1 (Windows 8.0.0)]: Connected on socket 19EZePoOha6FPj8uAAAA with id 92401631
PhantomJS 2.1.1 (Windows 8.0.0): Executed 2 of 2 SUCCESS (0.005 secs / 0.003 secs)
TOTAL: 2 SUCCESS

可以看见,两个测试用例都验证成功了
这里只是一个简单的入门介绍,想要尝试在自己的项目中使用,可以去github上看看,推荐看看这个(https://github.com/karma-runner/karma)

另关于jasmine断言的语法,大家可以去官网看看,我找了另一个博主的总结,觉得挺全面的,果断引用jasmine语法

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值