使用 CasperJS 對 Web 網站進行功能測試
CasperJS 包含一些非常有用的工具用來對 Web 網站進行功能性的測試,例如我們可以編寫如下的 JavaScript 腳本來測試 Google 的搜索:
var casper = require('casper').create();如你所見,
casper.test
是 tester.Tester 對象實例的引用,用來對結果進行斷言和輸出。
tester.Tester
API documentation 請看 dedicated section.現在開始運行這個測試腳本:
$ casperjs samples/googletest.js下面是運行結果:
![]()
如果是斷言失敗,那可能就是下面這種結果:
![]()
將結果導出為 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.xmlCasperJS tests
CasperJS 有它自己的單元測試和功能測試套件,在 tests 子目錄中,要運行這個測試套件可以執行如下命令:
$ cd /path/to/casperjs $ casperjs test tests/suites組織你的測試
將所有的測試寫在一個文件里是一件很不爽的時間,你可以將這些測試用例分開獨立存放。
但很重要的兩點是:
下面是第一個簡單的測試文件:
// 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 test /path/to/test/dir/test1.jscasper 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!