前端自动化测试mocha入门

来源:互联网 发布:trello mac 编辑:程序博客网 时间:2024/05/19 19:59

前端测试

背景知识

1.      什么是Node.js:后端的js运行环境,基于c++和google的v8

2.      Web服务器, 应用服务器和http服务器的区别: web服务器是仅接受和返回http请求的;应用服务器是包含要处理的业务的;http服务器则是遵循了http协议的,一般前两种都有这个功能

3.      匿名函数,闭包特性使得他(node.js)适合:事件驱动、异步编程。什么是同步/异步编程?简单说就是基于阻塞的,一个没有完成就一直去做;而异步的则是通过使用回调函数——即使一个函数没有执行完,也不会一直等待,而是同时开始新的操作,等他完成以后调用相应的回调即可。Node.js使用javascript的事件循环来支持它所推崇的异步编程风格。基本上,事件循环使得系统可以将回调函数先保存起来,而后当事件在将来发生时再运行。这里,返回的数据可以来自数据库,可以来自http请求。因此,可以看出node.js特别适合于处理网络中数据流的不确定性。

4.      Mocha是一个基于node.js和浏览器的集合各种特性的Javascript测试框架,并且可以让异步测试也变的简单和有趣。Mocha的测试是连续的,在正确的测试条件中遇到未捕获的异常时,会给出灵活且准确的报告。Mocha托管在Github上。

5.      WebDriver is a clean, fastframework for automated testing of webapps. 他是w3c的一个标准。WebDriver之所以能够实现与浏览器进行交互,是因为浏览器实现了这些协议。这个协议是使用JOSN通过HTTP进行传输。 Firefox可以直接使用,chrome和IE要安装各自的driver。

6.      测试框架是mocha+某种断言(expect等)+ webdiver(通常断言可以使用很多种,只要他可以抛出错误,都可以拿来用,在node.js下使用仅需要写上var expect=require('expect.js');就可以了)

具体分析

1.      所有的测试用例都在一个总的文件里面进行验证:

格式为#.testCase(App);

在test文件夹下面有所有页面的单元测试的#.js文件,里面是对应页面的测试用例,如果测试用例写的不全面,也是在这里增加

我们使用的测试工具是mocha, 他的使用方法非常简单(看起来貌似是这样):

describe(moduleName, function)

描述一句测试用例是否正确。首先describe是可以嵌套的,多个describe嵌套的使用用于描述模块下的子模块的关系

it(info, function)

真正的测试语句是在it函数的function里面,info也是一句描述性的说明,看得懂就行。function里面的断言决定这条测试是否正确。如果fail的话控制台会把log打印出来。一个it对应一个测试用例,里面可以有多条断言或一条断言。但是好的编码风格是一个it语句仅有一个断言,如果有更多的断言,考虑分成多个it。

Expect.to.be() / expect.to.contain() / expect.to.match()…

断言语句,用来输出信息(具体的可以参考https://github.com/Automattic/expect.js)。

2.      测试的分类:同步和异步

区别主要体现在done上。在你最深处的回调函数中加done()表示结束。在代码中的体现是:

.call(done)

表示回调函数的结束

3.      其他——before和after:

beforeEach会对当前describe下的所有子case生效。

before和after的代码没有特殊顺序要求。

同一个describe下可以有多个before,执行顺序与代码顺序相同。

同一个describe下的执行顺序为before, beforeEach, afterEach, after

当一个it有多个before的时候,执行顺序从最外围的describe的before开始,其余同理

4.      其他——pengding

不指定回调函数。一般适用情况比如负责测试框架的写好框架让组员去实现细节,或者测试细节尚未完全正确实现先注释以免影响全局测试情况。这种时候mocha会默认该测试pass。作用有点像Python的pass。那这一块是不是得由我们来写呢,这样,开发人员只用往里面填充了。

代码运行

运行前首先在git 下运行 java –jar selenium-server-standalone-2.44.0.jar 这个是支持webdriver用的;

安装了webstorm, 是一个运行的IDE。注意运行的时候把配置弄对。我们这里要选择mocha,Firefox。


0 0