nightwatch系列教程03——開發者指南:運行你的測試腳本

本章內容翻譯自http://nightwatchjs.org/guide#running-testsjavascript

測試運行器

Nightwatch 包含一個命令行的測試運行器,它讓運行測試文件和生成有用的輸出變得很是簡單。有幾種不一樣的方式來使用測試運行器,這取決你的安裝方式。css

全局安裝

若是你全局安裝了Nightwatch,那麼你能夠在任何地方運行nightwatch。java

nightwatch [source] [options]

項目中安裝

若是你將nightwatch做爲依賴安裝到了項目中,你可使用 node_modules/.bin 來運行nightwatch命令。node

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

建立一個nightwatch.js的文件,而後添加下面這行代碼:chrome

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

而後這麼運行:json

node nightwatch.js [source] [options]

測試源文件

可選的source參數,能夠指定一個文件,或者多個文件,或者整個文件夾來測試。它無論你的src_folders裏面是怎麼配置的。緩存

看幾個例子:ruby

運行單個測試文件bash

nightwatch tests/one/firstTest.js

運行不一樣的測試文件ide

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

相關文章
相關標籤/搜索