准备工作。。。。。。。。

简单的js文件测试
1.在本地新建一个文件夹ava-test,cmd定位到改文件下,将ava安装到该项目下,即npm install ava --save-dev,然后在此文件下面新建一个package.json文件,如下图:

{"scripts": {"test": "ava",},"devDependencies": {"ava": "^0.25.0"}
}

然后npm install,会看到在我们的ava-test文件下会生成node_modules和package-lock.json文件,这些会是我们以后测试可能需要的一些包,我们可以先不看。

2.新建测试文件main.js,main.test.js,这两个文件是我从网上找的例子,代码分别是

//main.js
var fibonacci = function (n) {if (typeof n !== 'number') {throw new Error('n should be a Number');}if (n < 0) {throw new Error('n should >= 0');}if (n === 0) {return 0;}   if (n === 1) {return 1;}   return fibonacci(n-1) + fibonacci(n-2);
};  if (require.main === module) {// 如果是直接执行 main.js,则进入此处// 如果 main.js 被其他文件 require,则此处不会执行。var n = Number(process.argv[2]);console.log('fibonacci(' + n + ') is', fibonacci(n));
} exports.fibonacci = fibonacci;
//main.test.js
import test from 'ava';
import {fibonacci} from './main.js';test('should equal 0 when n === 0', t => {t.is(fibonacci(0), 0);
});test('should equal 1 when n === 1', t => {t.is(fibonacci(1), 1);
});test('should equal 55 when n === 10', t => {t.is(fibonacci(10), 55);
});test('should throw when n < 0', t => {t.throws(() => fibonacci(-1), 'n should >= 0');
});test('should throw when n isnt Number', t => {t.throws(() => fibonacci('hha'), 'n should be a Number');
});

3.main.test.js是对main.js写的测试文件,执行ava main.test.js,可以看到如下结果,可以看到我们测试通过了。


C:\Users\13902\Desktop\ava-test>ava main.test.js5 passed

4.如果我们将main.test.js文件的代码修改下,如下图:

//将原来的55改成50
test('should equal 55 when n === 10', t => {t.is(fibonacci(10), 50);
});

其实这边50的数据是错误的,如果此时我们执行ava main.test.js,ava就会检测到我们的测试结果有问题,并会指明出错的代码在何处和正确值应该是什么,是不是很智能呢~~~~,结果如下:

C:\Users\13902\Desktop\ava-test>ava main.test.js4 passed1 failedshould equal 55 when n === 10C:\Users\13902\Desktop\ava-test\main.test.js:1312: test('should equal 55 when n === 10', t => {13:     t.is(fibonacci(10), 50);14: });Difference:- 55+ 50

5.此时我们要想看到文件的覆盖率的情况,可以用nyc ava main.test.js,nyc的安装可以看上一篇。如果我们继续用结果为50的代码,那此时文件的覆盖率(可以看上一篇文档)是什么呢?请看下图:

C:\Users\13902\Desktop\ava-test>nyc ava main.test.js4 passed1 failedshould equal 55 when n === 10C:\Users\13902\Desktop\ava-test\main.test.js:1312: test('should equal 55 when n === 10', t => {13:     t.is(fibonacci(10), 50);14: });Difference:- 55+ 50Test.t [as fn] (main.test.js:13:7)processEmit [as emit] (C:/tool/node_global/node_modules/nyc/node_modules/signal-exit/index.js:155:32)processEmit [as emit] (C:/tool/node_global/node_modules/nyc/node_modules/signal-exit/index.js:155:32)
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |    85.71 |       90 |      100 |    85.71 |                   |main.js  |    85.71 |       90 |      100 |    85.71 |             24,25 |
----------|----------|----------|----------|----------|-------------------|

如果是正确的代码,覆盖率没有任何的变化,不同的只是在出错代码处,会被指明。结果如下:

C:\Users\13902\Desktop\ava-test>nyc ava main.test.js5 passed
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |    85.71 |       90 |      100 |    85.71 |                   |main.js  |    85.71 |       90 |      100 |    85.71 |             24,25 |
----------|----------|----------|----------|----------|-------------------|

6.生成测试报告,修改package.json文件,如下:

{"scripts": {"test": "nyc ava","report": "nyc report --reporter=html"},"devDependencies": {"ava": "^0.25.0"}
}

7.我们执行npm run report,可以看到根目录下生成coverage文件夹,里面会有测试生成的html文件,我们可以直观的看到测试的覆盖率和代码的测试情况。

HTTP接口测试
1.在ava-test根目录下,新建test.http.js文件,内容如下:

import test from 'ava';
import request from 'request';// test.cb() 回调函数形式测试异步代码,异步结束调用 t.end()
test.cb('http api testing', t => {// 基于 Request API 创建 http 请求的配置const options = {baseUrl: 'http://www.phonegap100.com',url: '/appapi.php?a=getPortalList&catid=20&page=1',// 请求超时时间timeout: 5 * 1000,// http 请求头部,模拟得跟浏览器越像越好,不然被服务器处理成爬虫或者其他就可能得不到我们想要的响应headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}};// Request API 发送 GET 请求request.get(options, (err, res, body) => {if (err) t.fail('服务器响应超时!');if (res && res.statusCode === 200) {var datas = res.result;for(var i in datas){t.is(datas[i].catid,"20");}} else {t.fail('无响应内容或状态码错误!');}// 异步结束t.end();});
});

先安装request,npm install request --save-dev,然后执行ava test.http.js,结果如下:

C:\Users\13902\Desktop\ava-test>ava test.http.js1 passed

如果此时我们将baseUrl改成‘http://www.phonegap1000.com’,这时我们的url链接是无法访问的,此时我们执行ava test.http.js,对照我们的测试文件,可以知道肯定是测试失败,导致服务器响应超时了,此时结果如下:

C:\Users\13902\Desktop\ava-test>ava test.http.js1 failedhttp api testingC:\Users\13902\Desktop\ava-test\test.http.js:2120:     request.get(options, (err, res, body) => {21:         if (err) t.fail('服务器响应超时!');22:服务器响应超时!Request._request2.default.get [as _callback] (test.http.js:21:20)self.callback (node_modules/request/request.js:185:22)Request.onRequestError (node_modules/request/request.js:877:8)

2.按照正确的链接,执行代码nyc ava test.http.js,结果如下:

C:\Users\13902\Desktop\ava-test>nyc ava test.http.js1 passed
--------------|----------|----------|----------|----------|-------------------|
File          |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
--------------|----------|----------|----------|----------|-------------------|
All files     |    76.92 |    66.67 |      100 |    83.33 |                   |test.http.js |    76.92 |    66.67 |      100 |    83.33 |             26,30 |
--------------|----------|----------|----------|----------|-------------------|

3.生成html报告,npm run report

总结:写完对ava自动话测试后,感觉最熟悉的应该是他的命令了,还有他的最基本的用法,最有感觉的应该是http测试了,对接口进行简单的断言测试,可以分析出接口是否能请求生成,如果失败,是哪里出问题了,感觉还是棒棒哒的.............不过写出牛逼的测试,还是要多练习,现在网上能找到ava的知识,感觉相对较少。

Ava 自动化测试----对函数的简单测试和对Http接口的测试相关推荐

  1. 接口模糊测试工具java,api 接口 fuzz 测试初探

    Alt pic 目标 在日常测试工作中,经常会有api接口的测试,除了正向流程的测试之外,我们经常还需要覆盖一些异常情况. 例如: 不合法字符串 字符串超长 应该是数字类型的,传入了字母 参数为空 传 ...

  2. Jmeter验证码图片识别注册接口压力测试实战

    写在前面 前段时间写了一篇博文<Jmeter验证码注册接口压力测试实战>,前两天又登录对应的网站看了一下.发现原来滑动验证的方式改成了图片验证码的方式,防止用户多次发送手机验证码. 看到这 ...

  3. usb3.0速度测试软件,底层测试:USB3.0接口下速度提升10MB/S_移动存储评测-中关村在线...

    介绍完产品外观,下面我们一起来看看这款产品的速度表现如何? ● 底层测试:HD Tach HD Tach读速度测试不依赖于文件系统,曲线成绩基本相当于硬盘内部传输速率测试.体现的是很理想化的硬盘速度, ...

  4. 震惊!python类型的自动化测试框架原来这么简单!

    我是黄财财,励志成为打拳届最会测试的大肚腩少年的我,和哈皮群友聊了一天,发现很多群友不知道从什么方向去做自动化软件测试,所以大致写了这篇文章,希望对大家有所帮助. 大家如果想和我的哈皮群友讨论怎么学p ...

  5. C++数字是否为质数的函数的简单有效实现(附完整源码)

    C++数字是否为质数的函数的简单有效实现算法 C++数字是否为质数的函数的简单有效实现算法完整源码(定义,实现,main函数测试) C++数字是否为质数的函数的简单有效实现算法完整源码(定义,实现,m ...

  6. 自动化电子测试软件,自主开发的MIL测试自动化测试工具

    37年,55颗卫星,就在今天北斗真的成功了. 上一篇简单文章中介绍了一下MIL测试的流程,本文章将介绍一个小编自主开发的MIL测试用的自动化测试工具. 目前国内主流测试工具主要有三种类型: 基于第三方 ...

  7. 自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架

    自动化测试框架 2019 几十年来,Java一直是开发应用程序服务器端层的首选编程语言. 尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试,但随着时间的推移和测试的发展,当自动化测试不断 ...

  8. python3的格式化用法_浅析python3字符串格式化format()函数的简单用法

    format()函数 """ 测试 format()函数 """ def testformat(): # format()函数中有几个元素, ...

  9. 1.设计一个长方形的类,成员变量有长与宽,成员函数有求周长与面积,然后进行测试。要求有构造函数、析造函数和复制构造函数。

    1.设计一个长方形的类,成员变量有长与宽,成员函数有求周长与面积,然后进行测试.要求有构造函数.析造函数和复制构造函数. 代码比较简单,论坛有坛友问,顺手写一下当复习 #include <bit ...

最新文章

  1. ebs查看服务状态_Oracle EBS - 工单状态
  2. webservice restful一个小例子
  3. SolarReserve在加州开发2GW项目 美国市场将再度崛起?
  4. Visual Studio 2005中C++的变化
  5. 情人节福利,撩妹神器恋爱话术库它来了~
  6. [置顶] 基于tlplayer的ios应用《虎跃在线课堂-英语篇》上线了
  7. SPFA or bellman ford松弛法--单源最短路
  8. 服务器php 启动命令_php启动内置服务器
  9. mysql 跨数据库联表查询
  10. python中pickle模块_python中的pickle模块
  11. 烽火FSU设备通过中国铁塔测试
  12. php eot,php中理解print的EOT分界符
  13. 计算机界面视频录制软件,电脑版的录视频软件如何使用?录屏精灵为大家介绍基本操作...
  14. java代码运行的三个步骤,22年最新
  15. 教你认识系统进程_电脑维修啦 PCWXL.com
  16. Nvidia AGX Xavier GMSL 自动驾驶控制器设计方案
  17. snmptester 最新版下载地址
  18. 结对-象棋游戏-设计文档
  19. pandas to_excel如何突破65535的长度限制?
  20. 诺基亚wp手机安装linux,诺基亚Lumia1020升级wp8.1系统方法教程图解

热门文章

  1. 分布式事务-常见解决方案
  2. 安装Linux Mint 18.2后要做的20件事
  3. 亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 目录
  4. CSS让背景图片填满DIV
  5. 超全!互联网大厂的薪资和职级一览
  6. ISO26262 功能安全(1)--概览学习
  7. 激活黑群晖Synology Active Backup for Business,黑群晖系统备份软件激活,亲测有效
  8. 多智能体系统的概念与结构
  9. 微信小程序实现瀑布流 仿小红书
  10. 两套工厂通用ERP系统【源代码免费分享】