Mocha+should+Karma自动化测试教程

一、了解TDD与BDD

首先,为什么我们了解TDD与BDD的是什么意思?

在实际项目中,大部分都是采用BDD的形式进行开发,也就是行为驱动开发。

TDD,测试驱动开发,先编写单元测试代码,再去实现功能。

更为详细的内容请自行查阅资料。

二、 node assert断言库

既然要做TDD做开发模式,首先我们得了解node assert,大部分单元测试框架都是基于node assert的,所以先熟悉了node assert才能更好上手should.js。

  • assert(断言)

    • assert.AssertionError类

      • new assert.AssertionError(option)
  • 严格模式
  • 遗留模式
  • assert(value[, message]) -- 检测value是否为真值
  • assert.deepEqual(actual,expected[, message]) -- 检测实际值与期望值是否深度相等
  • assert.deepStrictEqual(actual,expected[, message]) -- 检测实际值与期望值是否严格深度相等
    • 比较运算的详细说明
  • assert.doesNotReject(asyncFn[, error],[, message]) --
  • assert.doesNotThrow(fn[, error],[, message])
  • assert.equal(actual, expected[, message]) -- 检测实际值与期望值是否相等
  • assert.fail([message]) --使用提供的错误消息或默认错误消息抛出 AssertionError
  • assert.ifError(value) -- 检测实际值是否为undefined或null
  • assert.notDeepEqual(actual,expected[, message]) -- 检测实际值与期望值非深度相等
  • assert.notEqual(actual,expected[, message]) --检测实际值与期望值不相等
  • assert.notStrictEqual(actual,expected[, message]) -- 检测实际值与期望值非严格相等
  • assert.ok(value[, message]) -- 检测实际值是否为真值
  • assert.rejects(asyncFn[, error], [, message]) --检测promise是否被拒绝
  • assert.strictEqual(actual, expected[, message]) -- 检测实际值与期望值严格相等
  • assert.throws(fn[, error], [, message]) -- 期望 fn 函数抛出错误。

三、mocha + should.js+ Karma

Mocha项目地址:visionmedia.github.com/mocha/

should项目地址:github.com/visionmedia…

Karma项目地址:karma-runner.github.io/

1、安装

  • 首先创建一个空白的工程文件夹作为我们的工程目录
cd E: // 进入E盘
mkdir my-karma  // 创建my-karma工程文件夹
cd my-karma     // 进入my-karma工程文件夹
复制代码
  • 输入命令安装Karma, mocha
npm install karma mocha --save-dev
复制代码
  • 安装完成后
  • 安装karma-mocha/karma-chrome-launcher依赖
  • 安装should.js依赖
npm install karma-mocha karma-chrome-launcher --save-dev
npm install should --save-dev
复制代码
  • 安装karma-cli来简化karma的调用,安装命令如下,其中-g表示全局参数,这样今后可以非常方便的使用karma了:
npm install -g karma-cli
复制代码

2、开启Karma

karma start
复制代码

运行后如图所示出现了一行INFO信息,并没有其他提示和动作,因为此时我们没有配置karma的启动参数。后面会加入karma.conf.js,这样karma就会自动启动浏览器并执行测试用例了

3、Karma+mocha配置:

  • 命令init进行配置
karma init
复制代码
  • 是windows电脑使用git bash执行该命令会报错,请更换为windows自带的命令框
  • 默认配置:除第一项更改为mocha测试工具
  • 配置说明:
  1. 框架:选mocha
  2. 是否添加Require.js插件
  3. 测试文件路径设置,文件可使用通配符
  4. 在测试文件路径下,需要排除的文件
  5. 是否允许Karma检测文件,yes表示当测试路径下的文件变化时,Karma会自动测试
  • karma.conf.js参数介绍
/**** Karma configuration* karma单元测试配置文件*/module.exports = function(config) {config.set({/**** 基础路径,用在files,exclude属性上*/basePath: "",/*** 测试框架* 可用的框架:https://npmjs.org/browse/keyword/karma-adapter*/frameworks: ["mocha"],/*** 需要加载到浏览器的文件列表*/files: ["test/*.js"],/*** 排除的文件列表*/exclude: [],/*** 在浏览器使用之前处理匹配的文件* 可用的预处理: https://npmjs.org/browse/keyword/karma-preprocessor*/preprocessors: {"karmaTest/test.js" : "coverage"},/*** 使用测试结果报告者* 可能的值: "dots", "progress"* 可用的报告者:https://npmjs.org/browse/keyword/karma-reporter*/reporters: ["progress", "coverage"],/*** 使用reporters为"coverage"时报告输出的类型和那目录*/coverageReporter: {type: "html",dir: "karmaTest/coverage"},/*** 服务端口号*/port: 9876,/*** 启用或禁用输出报告或者日志中的颜色*/colors: true,/*** 日志等级* 可能的值:* config.LOG_DISABLE //不输出信息* config.LOG_ERROR    //只输出错误信息* config.LOG_WARN //只输出警告信息* config.LOG_INFO //输出全部信息* config.LOG_DEBUG //输出调试信息*/logLevel: config.LOG_INFO,/*** 启用或禁用自动检测文件变化进行测试*/autoWatch: true,/*** 测试启动的浏览器* 可用的浏览器:https://npmjs.org/browse/keyword/karma-launcher*/browsers: ["Chrome"],/*** 开启或禁用持续集成模式* 设置为true, Karma将打开浏览器,执行测试并最后退出*/singleRun: true,/*** 并发级别(启动的浏览器数)*/concurrency: Infinity});
};
复制代码

4、测试脚本

  • 在工程目录下创建test文件夹,存放测试脚本

test.js

describe('验证add函数是否正确', function () {it('1 + 2', function () {should(add(1,2)).be.eql(3)})
})
复制代码
  • 在工程目录下创建src文件夹,存放js函数文件

add.js

function add(a, b) {return a + b
}复制代码
  • 修改karma.conf.js配置,添加需要加入到浏览器的文件路径
  • 最后在命令行中输入启动测试
karma start复制代码
  • 出现测试成功,并打开chrome启动,代表测试程序成功了。

转载于:https://juejin.im/post/5c8c9138e51d456efd4deeb8

Mocha+should+Karma自动化测试教程相关推荐

  1. Karma、Mocha和Chai自动化测试解决方案

    一.背景 随着平台功能越来越多,接口及关联数据复杂,传统功能测试无法满足覆盖测试要求,顾搭建针对TypeScript的自动化单元测试. 该测试体系具有以下优点: 缩短测试时间:通过自动化测试体系,可以 ...

  2. nightwatch + selenium 基于浏览器的web自动化测试 教程(一)

    目录 什么是nightwatch nightwatch的实现原理 安装与配置 安装nodejs 安装nightwatch Selenium Server Setup Selenium Server 下 ...

  3. appium的python教程_移动App Appium自动化测试教程Appium+Python 【2018年新】_IT教程网...

    资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 1-3 移 ...

  4. pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】

    资源介绍 资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 ...

  5. 压力测试-Jmeter自动化测试教程

    目录 Jmeter目录 1.Jmeter的安装与部署 1.1 环境要求 1.2 安装Jmeter 1.3 配置Jmeter环境变量 1.4 Jmeter的使用 手写自动化测试脚本(不建议用) 通过录制 ...

  6. appium python自动测试 百度网盘_S35 移动App Appium自动化测试教程Appium+Python 百度云...

    Python视频教程名称:移动App Appium自动化测试教程Appium+Python  Python视频教程 [IT视频教程网] it教程 ( l  w1 F: L" `, v 2 c ...

  7. 测试工程师进阶,从0-1学习Cucumber之基于behave框架自动化测试教程(三)

    目录 前情提要 环境搭建前 behave 环境搭建 behave 常见用法demo demo one:如何在feature的step中传入参数 demo two:如何在feature的step中传入大 ...

  8. python 工业自动化控制_python工业自动化测试教程

    python工业自动化测试教程内容摘要 python工业自动化测试教程P>winpython基础教程,为你的店堂营造出一种艺术氛围,为男性开辟集中便捷的专门场所已为不少商场所采纳,为目标顾客提供 ...

  9. 使用WebDriver + Java + Junit做自动化测试教程

    web的自动化测试是比较有挑战性的工作,难度不亚于产品功能开发.web自动测试需要借助一些工具来完成.这其中涉及的工具有Webdriver\Java\Eclipse\Junit\Maven等. 详细的 ...

最新文章

  1. 博士申请 | 日内瓦大学招收机器学习和计算机视觉博士生(年薪35万)
  2. mysqlbinlog工具_mysqlbinlog命令详解 Part 1-实验环境准备
  3. ConTeXt 标题前后的空白
  4. jsr-303 参数校验—自定义校验注解
  5. python 菜单 阻塞 其它程序_Python subprocess.call阻塞
  6. 春运渡劫?Python 帮你 12306 抢回家的火车票!
  7. Map 3D API二次开发学习指南
  8. xampp修改mysql的默认空密码
  9. qq linux五笔输入法,qq五笔输入法
  10. 信息论基础 原书第二版 中文版
  11. php前台模板下载,thinkphp前台模板下载.doc
  12. win10快捷键整理记录
  13. VGA , CVBS , HDMI 三者的区别
  14. WPF实现半圆形导航菜单
  15. Hexo | yilia主题安装
  16. 两种方法:在 PowerPoint 中插入视频
  17. 系统自带的最便捷的远程控制方法
  18. verilog HDLBits Verilog语法
  19. 一些可以参考的文档集合4
  20. 鼎信诺虚拟服务器导数,鼎信诺使用手册--自编版.docx

热门文章

  1. C#事件(event)解析
  2. Bzoj3509 [CodeChef] COUNTARI
  3. 苹果向App Analytics添加新的指标和特性
  4. windows 7 unmountable boot volume 解决方法
  5. 2.2. 对网络安全的威胁
  6. Web.config配置文件详解(新手必看)
  7. Gradle的安装和在idea的配置
  8. 改变自己从学习linux开始
  9. [转]EXP-00056: 遇到 ORACLE 错误 31600
  10. kvm虚拟化框架结构层次梳理及图形化的使用