zoukankan      html  css  js  c++  java
  • nightwatch系列教程03——开发者指南:运行你的测试脚本

    本章内容翻译自http://nightwatchjs.org/guide#running-tests

    测试运行器

    Nightwatch 包含一个命令行的测试运行器,它让运行测试文件和生成有用的输出变得非常简单。有几种不同的方式来使用测试运行器,这取决你的安装方式。

    全局安装

    如果你全局安装了Nightwatch,那么你可以在任何地方运行nightwatch。

    nightwatch [source] [options]

    项目中安装

    如果你将nightwatch作为依赖安装到了项目中,你可以使用 node_modules/.bin 来运行nightwatch命令。

    • Linux and MacOSX
    ./node_modules/.bin/nightwatch [source] [options]
    • Windows

    创建一个nightwatch.js的文件,然后添加下面这行代码:

    require('nightwatch/bin/runner.js');

    然后这么运行:

    node nightwatch.js [source] [options]

    测试源文件

    可选的source参数,可以指定一个文件,或者多个文件,或者整个文件夹来测试。它不管你的src_folders里面是怎么配置的。

    看几个例子:

    运行单个测试文件

    nightwatch tests/one/firstTest.js

    运行不同的测试文件

    nightwatch tests/one/firstTest.js tests/secondTest.js

    运行一个指定的文件和一个测试文件所在目录

    nightwatch tests/one/test.js tests/utils

    命令行选项

    测试运行器支持许多运行时的选项,可以运行 nightwatch --help 来查看全部

    名称 简写 默认值 描述
    --config -c ./nightwatch.json nightwatach.json文件的位置,该文件是测试运行器使用的,它还包含着Selenium WebDriver的一些选项
    --output -o tests_output 测试运行完成以后JUnit XML报告存放的路径
    --reporter -r junit 预定义的报告器的名称,或者是你使用的自定义的报告器文件的路径
    --env -e default 指定nightwatch运行的环境(在nightwatch.json)中定义的
    --verbose 在会话期间显示selenium命令的日志
    --version -v 展示当前版本
    --test -t 仅运行指定的测试套件/模块。默认情况下,测试运行器会尝试去运行配置文件中src_folders属性对应的测试文件夹及其子文件夹中的测试文件
    --testcase 只能跟--test命令一起用。用来运行当前测试套件中的某一个用例(testcase)
    --group -g 仅运行指定及其子目录的测试文件。
    --skipgroup -s 跳过个或多个的测试文件
    --filter -f 当加载测试文件时,指定一个过滤器(glob表达式)作为文件名的格式
    --tag -a 根据标签来过滤要运行的测试文件。只有有指定标签的测试文件才会被执行
    --skiptags 跳过指定标签的测试文件,多个标签用逗号隔开
    --retries 重试失败或错误的测试用例达到指定的次数。如果一个测试用例包含 beforeEachafterEach 时,重试运行时也会执行它们
    --suiteRetries 重试失败或错误的测试套件达到指定的次数。如果一个测试套件包含 beforeafter 时,重试运行时也会执行它们(全局的beforeEachafterEach除外)

    测试组

    Nightwatch让你可以将测试文件分组,并且按需的运行它们。对测试文件分组很简单,只要将它们按放到一个子文件夹中就行了。文件夹的名称就是分组的名称。

    例子:

    lib/
      ├── selenium-server-standalone.jar
    custom-commands/
      ├── loginUser.js
      ├── attachPicture.js
    tests/
      ├── logingroup
      |   ├── login_test.js
      |   └── otherlogin_test.js
      ├── addressbook
      |   ├── addressbook_test.js
      |   └── contact_test.js
      ├── chat
      |   ├── chatwindow_test.js
      |   ├── chatmessage_test.js
      |   └── otherchat_test.js
      └── smoketests
          ├── smoke_test.js
          └── othersmoke_test.js

    如果你只想运行 smoketests 这个分组的话,这么运行:

    nightwatch --group smoketests

    如果你不想运行这个分组的话,这么运行:

    nightwatch --skipgroup smoketests

    如果你想跳过多个分组,用逗号隔开就可以了:

    nightwatch --skipgroup addressbook,chat

    测试标签

    同样,你也可以基于标签来选择性的运行测试文件,一个测试可能属于多个标签。比如,你可能又一个登录的测试文件,它即属于登录套件(login suite),又属于 正常套件(sanity suite)

    给测试文件添加标签,只要添加@tags就可以了:

    module.exports = {
      '@tags': ['login', 'sanity'],
      'demo login test': function (client) {
         // test code
      }
    };

    选择指定的标签运行:

    nightwatch --tag login

    指定多个标签运行:

    nightwatch --tag login --tag something_else

    跳过指定的标签:

    nightwatch --skiptags login

    跳过多个标签:

    nightwatch --skiptags login,something_else

    禁用测试文件

    要想让一个测试模块不运行,只要给它添加一个 disabled 为true的属性就行了:

    module.exports = {
      '@disabled': true, // 这将会让这个测试套件不能运行
    
      'sample test': function (client) {
        // test code
      }
    };

    当你知道这个测试套件注定失败的时候,使用这个属性是很有用的。

    禁用个别测试用例

    禁用单独的测试用例目前并不是nightwatch开箱即用的的支持。然而它可以相对简单的实现——通过将function转为string,这样nightwatch就会忽略这个测试用例。

    例子:

    module.exports = {
      'sample test': function (client) {
        // test code
      },
    
      // disabled
      'other sample test': '' + function (client) {
        // test code
      }
    };
    

    并行运行测试

    从 V0.5 开始,nightwatch开始支持并行运行测试。通过在命令行指定多个环境来实现,如:

    nightwatch -e default,chrome

    这就可以同时在两个环境中运行测试了。

    终端输出

    每个环境都是以独立的子进程来运行的,输出会被发送到主进程。

    为了输出的可读性,nightwatch默认的会按照环境分组,缓存所有子进程的输出,最终一起展示。如果你不想这样,你可以在你的nightwatch.json中设置属性live_output为true,注意要设置在第一层级。

    使用workers

    0.7版本引入了一个新的特性,允许并行运行测试。当启用此功能时,测试运行器将启动可配置数量的子进程,然后将加载的测试分发到并行运行。

    可以通过设置test_workers来启用:

    "test_workers": {
      "enabled": true,
      "workers": "auto"
    }   

    或者更简单:

    "test_workers": true

    workers 选项是用来设置同时运行的最大子进程数。

    • "auto" 表示根据你的CPU数量决定。
    • {number} 表示具体的数量

    并行运行测试是文件级别的。每个测试文件都会满足test worker的插槽。独立的测试步骤是不会并行运行的。

    0.9版本为并行运行测试的输出做了进一步的支持。为了输出的可读性,我们建议你设置 detailed_output 为false.

    本章还有两个小节,主要讲的是使用 grunt 和使用 mocha ,由于这两个我都不熟,而且内容也相对简单,就是改改配置,就不翻译了。感兴趣或者有需要的,可以直接参考官网:http://nightwatchjs.org/guide#using-grunt

  • 相关阅读:
    使用tornado的gen模块改善程序性能
    分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业
    博客园配置MarsEdit客户端
    分析一个C语言程序生成的汇编代码-《Linux内核分析》Week1作业
    微信支付的开发流程
    探究加法操作的原子性
    mac下mysql数据库的配置
    从range和xrange的性能对比到yield关键字(中)
    使用装饰器时带括号与不带括号的区别
    从range和xrange的性能对比到yield关键字(上)
  • 原文地址:https://www.cnblogs.com/jerryyj/p/9621543.html
Copyright © 2011-2022 走看看