使用 CasperJS 對 Web 網站進行功能測試

jopen 12年前發布 | 61K 次閱讀 CasperJS 測試工具

CasperJS 包含一些非常有用的工具用來對 Web 網站進行功能性的測試,例如我們可以編寫如下的 JavaScript 腳本來測試 Google 的搜索:

var casper = require('casper').create();

casper.start('

casper.then(function() { this.test.assertTitle('foo - Recherche Google', 'google title is ok'); this.test.assertUrlMatch(/q=foo/, 'search term has been submitted'); this.test.assertEval(function() { return utils.findAll('h3.r').length >= 10; }, 'google search for "foo" retrieves 10 or more results'); });

casper.run(function() { this.test.renderResults(true); });</pre>

如你所見,casper.test 是 tester.Tester 對象實例的引用,用來對結果進行斷言和輸出。

tester.Tester API documentation 請看 dedicated section.

現在開始運行這個測試腳本:

$ casperjs samples/googletest.js

下面是運行結果:

使用 CasperJS 對 Web 網站進行功能測試

如果是斷言失敗,那可能就是下面這種結果:

使用 CasperJS 對 Web 網站進行功能測試

將結果導出為 xUnit 格式

CasperJS 可以將測試結果導出為 xUnit 的 XML 格式,這樣就可以方便的與一些持續集成工具如Jenkins 集成. 可以使用如下代碼來保存:

casper.run(function() {
    this.test.renderResults(true, 0, 'log.xml');
});

還有一個更酷的方法就是通過 CLI 參數解析來增加選項:

casper.run(function() {
    this.test.renderResults(true, 0, this.cli.get('save') || false);
});

然后:

$ casperjs test.js --save=log.xml

CasperJS tests

CasperJS 有它自己的單元測試和功能測試套件,在 tests 子目錄中,要運行這個測試套件可以執行如下命令:

$ cd /path/to/casperjs
$ casperjs test tests/suites

組織你的測試

將所有的測試寫在一個文件里是一件很不爽的時間,你可以將這些測試用例分開獨立存放。

但很重要的兩點是:

  1. 不要 在獨立的測試文件里創建新的 Casper 實例

  2. 測試結束后要調用 Tester.done() 方法

下面是第一個簡單的測試文件:

// file: /path/to/test/dir/test1.js

casper.test.comment('My first test file');
casper.test.assert(true, "true is so true");
casper.test.done(); // I must be called!

再來一個:

// file: /path/to/test/dir/test2.js

casper.test.comment('This is my second test file, a bit more async');

casper.start('http://my.location.tld/', function() {
    this.test.assertNot(false, "false is so false");
});

casper.run(function() {
    this.test.done(); // I must be called once all the async stuff has been executed
});

標準的 Casper 累實例存儲在一個名為 casper 變量中,你無需重復定義直接使用即可。

casperjs test 命令用來執行某個目錄下的所有測試文件:

$ casperjs test /path/to/test/dir/

理論上你將看到如下輸出:

使用 CasperJS 對 Web 網站進行功能測試

當然,你也可以執行某個單獨的測試文件:

$ casperjs test /path/to/test/dir/test1.js

casper test 命令還包含其他一些參數:

  • --xunit=<filename> 用來導出測試結果到 xUnit XML 文件格式
  • --direct 直接輸出日志信息到控制臺
  • --log-level=<logLevel> 設置日志級別 (請看 related section)

擴展 Casper

$ casper test [path] 命令其實只是$ casper /path/to/casperjs/tests/run.js [path] 命令的更快捷的執行方式,因此,如果你需要對這個過程進行擴展,最好的方法是直接修改 run.js 這個文件。

英文原文,OSCHINA原創翻譯

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!