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项目地址:http://visionmedia.github.com/mocha/

should项目地址:https://github.com/visionmedia/should.js

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

1、安装

  • 首先创建一个空白的工程文件夹作为我们的工程目录
  1. cd E: // 进入E盘
  2. mkdir my-karma // 创建my-karma工程文件夹
  3. cd my-karma // 进入my-karma工程文件夹
  • 输入命令安装Karma, mocha
  1. npm install karma mocha --save-dev
  • 安装完成后

  • 安装karma-mocha/karma-chrome-launcher依赖
  • 安装should.js依赖
  1. npm install karma-mocha karma-chrome-launcher --save-dev
  2. npm install should --save-dev

  • 安装karma-cli来简化karma的调用,安装命令如下,其中-g表示全局参数,这样今后可以非常方便的使用karma了:
  1. npm install -g karma-cli

2、开启Karma

  1. karma start

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

3、Karma+mocha配置:

  • 命令init进行配置
  1. karma init
  • 是windows电脑使用git bash执行该命令会报错,请更换为windows自带的命令框

  • 默认配置:除第一项更改为mocha测试工具

  • 配置说明:
  1. 框架:选mocha
  2. 是否添加Require.js插件
  3. 测试文件路径设置,文件可使用通配符
  4. 在测试文件路径下,需要排除的文件
  5. 是否允许Karma检测文件,yes表示当测试路径下的文件变化时,Karma会自动测试
  • karma.conf.js参数介绍
  1. /***
  2. * Karma configuration
  3. * karma单元测试配置文件
  4. */
  5. module.exports = function(config) {
  6. config.set({
  7. /***
  8. * 基础路径,用在files,exclude属性上
  9. */
  10. basePath: "",
  11. /**
  12. * 测试框架
  13. * 可用的框架:https://npmjs.org/browse/keyword/karma-adapter
  14. */
  15. frameworks: ["mocha"],
  16. /**
  17. * 需要加载到浏览器的文件列表
  18. */
  19. files: [
  20. "test/*.js"
  21. ],
  22. /**
  23. * 排除的文件列表
  24. */
  25. exclude: [
  26. ],
  27. /**
  28. * 在浏览器使用之前处理匹配的文件
  29. * 可用的预处理: https://npmjs.org/browse/keyword/karma-preprocessor
  30. */
  31. preprocessors: {
  32. "karmaTest/test.js" : "coverage"
  33. },
  34. /**
  35. * 使用测试结果报告者
  36. * 可能的值: "dots", "progress"
  37. * 可用的报告者:https://npmjs.org/browse/keyword/karma-reporter
  38. */
  39. reporters: ["progress", "coverage"],
  40. /**
  41. * 使用reporters为"coverage"时报告输出的类型和那目录
  42. */
  43. coverageReporter: {
  44. type: "html",
  45. dir: "karmaTest/coverage"
  46. },
  47. /**
  48. * 服务端口号
  49. */
  50. port: 9876,
  51. /**
  52. * 启用或禁用输出报告或者日志中的颜色
  53. */
  54. colors: true,
  55. /**
  56. * 日志等级
  57. * 可能的值:
  58. * config.LOG_DISABLE //不输出信息
  59. * config.LOG_ERROR //只输出错误信息
  60. * config.LOG_WARN //只输出警告信息
  61. * config.LOG_INFO //输出全部信息
  62. * config.LOG_DEBUG //输出调试信息
  63. */
  64. logLevel: config.LOG_INFO,
  65. /**
  66. * 启用或禁用自动检测文件变化进行测试
  67. */
  68. autoWatch: true,
  69. /**
  70. * 测试启动的浏览器
  71. * 可用的浏览器:https://npmjs.org/browse/keyword/karma-launcher
  72. */
  73. browsers: ["Chrome"],
  74. /**
  75. * 开启或禁用持续集成模式
  76. * 设置为true, Karma将打开浏览器,执行测试并最后退出
  77. */
  78. singleRun: true,
  79. /**
  80. * 并发级别(启动的浏览器数)
  81. */
  82. concurrency: Infinity
  83. });
  84. };

4、测试脚本

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

test.js

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

add.js

  1. function add(a, b) {
  2. return a + b
  3. }

  • 修改karma.conf.js配置,添加需要加入到浏览器的文件路径

  • 最后在命令行中输入启动测试
  1. karma start

  • 出现测试成功,并打开chrome启动,代表测试程序成功了。

Mocha+should+Karma自动化测试教程的更多相关文章

  1. Appium自动化测试教程-自学网-adb命令

    adb命令: adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试应用. T ...

  2. 【python接口自动化测试教程】00---00章节就代表开篇吧

    今天突然想写个接口测试教程,由于本人是初级的比小白稍微好那么一丢丢,所以不知道能不能坚持下来 写的不对的地方还请大咖指教 先去忙自己的工作了,忙完了回来开始写第一章吧 或者先写个大纲,要不然写的章节会 ...

  3. 18年selenium3+python3+unittest自动化测试教程(下)

    第六章 自动化测试进阶实战篇幅 1.自动化测试实战进阶之网页单选性别资料实战 简介:讲解使用selenium修改input输入框和单选框 2.自动化测试之页面常见弹窗处理 简介:讲解使用seleniu ...

  4. 18年selenium3+python3+unittest自动化测试教程(上)

    第一章 自动化测试课程介绍和课程大纲 1.自动化测试课程介绍 简介:讲解什么是自动化测试和课程大纲讲解,课程需要的基础和学后的水平 python3.7+selenium3 pycharm 第二章自动化 ...

  5. Appium自动化测试教程-自学网-monkeyrunner简介

    monkeyrunner简介 MonkeyRunner工具是使用Jython(使用Java编程语言实现的Python)写出来的,它提供了多个API,通过monkeyrunner API 可以写一个Py ...

  6. Appium自动化测试教程-自学网-monkey简介

    Monkey简介 在Android的官方自动化测试领域有一只非常著名的“猴子”叫Monkey,这只“猴子”一旦启动,就会让被测的Android应用程序像猴子一样活蹦乱跳,到处乱跑.人们常用这只“猴子” ...

  7. Appium自动化测试教程-自学网-SDK

    SDK:软件开发工具包,被软件开发工程师用于特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. 因此,Android SDK指的是Android专属的软件开发工具包. 1,安装 ...

  8. Appium自动化测试教程-自学网-app基础知识

    Instrumentation的缺点是不支持跨应用,比如我想要先调起通讯录,在操作其他的app,则不支持. 第一步,应该确定系统哪些模块适合自动化.哪些不适合做自动化,明确做自动化给我们带来的好处是什 ...

  9. Appium自动化测试教程-自学网-monkeyrunner API

    MonkeyRunner API MonkeyRunner工具主要有三个类: MonkeyRunner MonkeyDevice MonkeyImage 官方API文档 :http://www.and ...

随机推荐

  1. Redux Todos Example

    此项目模板是使用Create React App构建的,它提供了一种简单的方法来启动React项目而无需构建配置. 使用Create-React-App构建的项目包括对ES6语法的支持,以及几种非官方 ...

  2. Day048--jQuery自定义动画和DOM操作

    内容回顾 BOM location.reload() 全局刷新页面 location.href location.hash location.pathname location.hostname lo ...

  3. div高度随浏览器窗口高度变化;

    通过实际测试,按照网上的说法通过设置html,body{height: 100%:}, 然后让div以100%继承body的高度,这种做法是错误的,必须得上级有个设置固定的高度. 原生js代码(参照网 ...

  4. python中的装饰器迭代器生成器

    装饰器: 定义:本质是函数(装饰其它函数) 为其它函数添加附加功能 原则: 1 不能修改被装饰函数源代码    2 不修改被装饰函数调用方式 实现装饰器知识储备: 1 函数即‘’变量‘’ 2 高阶函数 ...

  5. 【机器学习】BP & softmax求导

    目录 一.BP原理及求导 二.softmax及求导 一.BP 1.为什么沿梯度方向是上升最快方向     根据泰勒公式对f(x)在x0处展开,得到f(x) ~ f(x0) + f'(x0)(x-x0) ...

  6. Hadoop记录-hadoop jmx配置

    1.hadoop-env.sh添加export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dco ...

  7. [物理学与PDEs]第1章习题3 常场强下电势的定解问题

    在一场强为 ${\bf E}_0$ (${\bf E}_0$ 为常向量) 的电场中, 置入一个半径为 $R$ 的导电球体, 试导出球外电势所满足的方程及相应的定解条件. 解答: 设导电球体为 $B_R ...

  8. unet

    使用unet 直接训练 显著性目标检测数据集,不能得到较好的效果. 在一些情况下(边缘对比较强的情况),分割效果还行.由于没有在ImageNet上得到预训练模型,所以不能得到较好的语义分割的效果

  9. Nginx--服务部署、基于域名的虚拟主机配置

    一.服务部署 1.预处理 安装CentOS ,配置hosts.静态IP.设置必要的安全参数等(略) 1-1.系统环境 [root@vnx ~]# cat /etc/redhat-release Cen ...

  10. maven 分隔环境

    在pom.xml 上 添加 把要分隔的环境 文件 弄成这样 打包 mvn clean package -Dmaven.test.skip=true -P+环境名 例子:mvn clean packag ...