首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Intern - JavaScript 自动化测试也可以如此便捷(1)

Intern - JavaScript 自动化测试也可以如此便捷(1)

Intern 简介Intern 是由 SitePen 公司推出的一款 JavaScript 自动化测试框架。其主体代码基于 Node.js,它不仅支持类似 QUnit、Jasmine 等常用单元测试框架提供的 JavaScript 代码逻辑单元测试,还提供 Functional Testing 的自动化实现 —— 开发者可以通过 WebDriver API 书写测试用来例模仿用户与 UI 界面的交互,并且包含了测试覆盖率统计这一使用功能。此外,Intern 还支持可插拔的断言(assertion)库配置。测试结果可以根据需要通过不同的格式呈现。
Intern 的 Unit Test 测试流程较为简单:
  • Node.js 执行编写好的测试用例
  • 测试用例使用配置的断言库返回测试结果
  • 调用配置好的 reporter 输出测试结果
Functional Testing 测试流程如下:
  • 启动 Selenium 服务器
  • Node.js 根据 Intern 配置文件中的配置的 capabilities,tunnel 以及 tunnelOptions 参数,连接到对应的 Selenium 服务器
  • 通过 WebDriver API 在配置文件中 environments 参数定义的浏览器中执行测试用例
  • 测试用例使用配置的断言库返回测试结果
  • 调用配置好的 reporter 输出测试结果
将 Intern 加入到您的项目在本文中,我们将使用 Intern 的 2.1.1 版本。由于 Intern 是基于 Node.js 实现并已作为一个 Node Packaged Module 发布,用户可以使用 npm 命令将其安装到项目中。假设一项目的根目录为 myprojrect,可以通过如下命令安装。执行 npm 命令前需要安装 Node.js。
清单 1. 安装 Intern
1
2
cd myproject
npm install intern --save-dev




准备待测代码后文将以 Dojo Toolkit 为待测对象,因此需要从  面获得源代码,并将其放到 myproject/dojo 文件夹内。本文使用 Dojo Toolkit 1.10.1 版。目录结构如图 1。
图 1. 目录结构配置 Intern执行清单 1 的命令后,myproject/node_modules 文件夹下可以找到 intern 文件夹。在 myproject 文件夹下创建 tests 文件夹并将 myproject/node_modules/intern/tests/example.intern.js 文件复制到该文件夹下,命名为 local_profile.js。local_profile.js 包含了之后我们执行 Intern 测试用例的配置。我们需要对其做如下改动。
  • 修改 capabilities 参数。本文使用 selenium 2.37.0,因此设置 capabilities 为清单 2. capabilities 配置
    1
    2
    3
    capabilities: {
        'selenium-version': '2.37.0'
    },




  • 修改 enviroments 参数。本文使用 chrome 及 firefox 作为测试环境,因此设置 environments 为清单 3. environments 配置
    1
    2
    3
    4
    environments: {
        {'browserName': 'chrome'},
        {'browserName': 'firefox'}
    },




  • 修改 tunnel 参数并添加 tunnelOptions 参数。本文将使用本地的 selenium server 执行 Functional 测试用例,因此修改 tunnel 参数并添加 tunnelOptions 参数为清单 4. tunnel 及 tunnelOptions 配置
    1
    2
    3
    4
    5
    tunnel: 'NullTunnel',
    tunnelOptions: {
        hostname: 'localhost',
        port: 4444
    },




    注意:在 Intern 2.0 版本前 tunnelOptions.hostname 和 tunnelOptions.port 参数并不存在,应使用 webdriver.host 及 webdriver.port 参数。
  • 添加待测模块。在 loader.packages 参数中添加待测的 dojo 及 dijit 模块路径。清单 5. loader.packages 配置
    1
    2
    3
    4
    5
    6
    7
    loader: {
        packages: [
            { name: 'myPackage, location: '.'},
            { name: 'myDojo, location: './dojo/dojo'},
            { name: 'myDijit, location: './dojo/dijit'},
        ]
    }




    注意:每个 package 的 location 都是相对 local_profile.js 配置文件的相对路径。
  • 修改将 suites 及 functionalSuites 参数添加待测用例。清单 6. suites 及 functionalSuites 配置
    1
    2
    3
    4
    5
    6
    suites: [
            'myPackage/tests/unit/FirstUnitTestModule'
    ],
    functionalSuites: [
        myPackage/tests/functional/FirstFunctionalTestModule'
    ],




简单的 5 步就完成了对 Intern 所需的配置。更多进阶参数的详细配置可参考 。
返回列表