2015-11-13 66 views
1

我們有一些監控測試,它們按計劃持續執行,有時會由於未知的網絡相關錯誤而失敗。我可以爲量角器測試處理特定的茉莉花錯誤嗎?

修復隨機網絡錯誤是優先事項之一,但同時我正在考慮優雅地處理這種錯誤 - 無論是在量角器或茉莉花。

錯誤消息總是相同,所以我想知道是否有辦法通過量角器配置文件或某處處理該錯誤?

例如:

expect(obj1).isEqual(obj2) 

當有真正的失敗茉莉給像

obj1 is not equal to obj2 

錯誤消息當存在有一致的信息,然後茉莉打印錯誤看起來像

隨機網絡錯誤
Unable to connect to network. It may be busy now so please try later (example message) 

我想覆蓋所有的茉莉花錯誤,只有igno將我的示例消息重新報告爲失敗。

錯誤跟蹤日誌:

Stacktrace: 
UnknownError: <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> 
      <html> 
      <head> 
      <title>*** Web Proxy</title> 
      <LINK REL ="stylesheet" TYPE="text/css" HREF="http://xdddd.com/cacheflow/errors.css" TITLE="Style"> 
      </head> 
      <body bgcolor="#ffffff"> 
      <table width="100%" border="0" cellpadding="1" cellspacing="0" bgcolor="#ccccff"> 
        <tr><td><font size="-3"> </font></td></tr> 
        <tr><td valign="middle"> 
          <h2> <img SRC="http://home.xx.com/art/logos/black_51x51.gif" ALT="XXXXXXXX" border="0" height="51" width="51"> Web Proxy Error - TCP Error 503</h2> <hr size="1" color="black"> </td> 
        </tr> 
      </table> 
      <br> 
      <font color=red><b>XXXXXXXXX.com</b></font><p> 
      The Firm's web proxy could not contact the web server in the URL above. This can happen when the web 
      server is down, too busy, or is unreachable on the Internet. Try the server again later. If you receive 
      this message for many URLs, please contact your local helpdesk to report the problem. 
      <font size="-1"><br><br><br> 
      Reporting proxy: uxxxxxx.com<br><br> 
      Copyright 2000 - The XXXXXXXX, Inc. - All rights reserved. 
      </font> 
      </body> 
      </html> 

    at new bot.Error (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:108:18) 
    at Object.bot.response.checkResponse (h:\Projects\mdddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\response.js:106:11) 
    at h:\Projects\xxxxxxx\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:379:20 
    at [object Object].promise.ControlFlow.runInFrame_ (eval at <anonymous> (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:1857:20) 
    at [object Object].goog.defineClass.notify (eval at <anonymous> (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:2448:25) 
    at [object Object].promise.Promise.notify_ (eval at <anonymous> (h:\Projects\dddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:564:12) 
    at Array.forEach (native) 
    at [object Object].promise.Promise.notifyAll_ (eval at <anonymous> (h:\Projects\dddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:553:15) 
    at [object Object].goog.async.run.processWorkQueue [as _onTimeout] (h:\Projects\ddddddn\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15) 
Error 
    at [object Object].ElementArrayFinder.applyAction_ (h:\Projects\dddddd\web\private-site\node_modules\protractor\lib\element.js:392:21) 
    at [object Object].self.(anonymous function) [as isDisplayed] (h:\Projects\dddddd\web\private-site\node_modules\protractor\lib\element.js:76:19) 
    at [object Object].self.(anonymous function) [as isDisplayed] (h:\Projects\dddddd\web\private-site\node_modules\protractor\lib\element.js:721:11) 
    at [object Object].expectHomePage (h:\Projects\ddddddd\web\private-site\test-common\page-objects\learning-center.js:10:20) 
    at h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\jasminewd\index.js:94:14 
    at [object Object].promise.ControlFlow.runInFrame_ (eval at <anonymous> (h:\Projects\dddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:1857:20) 
    at [object Object].promise.ControlFlow.runEventLoop_ (eval at <anonymous> (h:\Projects\dddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:1729:8) 
    at [object Object].eval (eval at <anonymous> (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\base.js:1124:19), <anonymous>:2043:12) 
    at [object Object].goog.async.run.processWorkQueue [as _onTimeout] (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:130:15) 
From: Task: Asynchronous test function: it() 
    at [object Object].<anonymous> (h:\Projects\dddddd\web\private-site\node_modules\protractor\node_modules\jasminewd\index.js:93:33) 
    at [object Object].<anonymous> (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37) 
    at [object Object].jasmine.Block.execute (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17) 
    at [object Object].jasmine.Queue.next_ (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31) 
    at [object Object]._onTimeout (h:\Projects\dddddddn\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2199:18) 
Error 
    at [object Object].<anonymous> (h:\Projects\ddddddd\web\private-site\test-monitoring\specs\learning-center.spec.js:11:5) 
    at [object Object].jasmine.Env.describe_ (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21) 
    at [object Object].jasmine.Env.describe (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15) 
    at describe (h:\Projects\ddddddd\web\private-site\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:658:27) 
    at Object.<anonymous> (h:\Projects\ddddddd\web\private-site\test-monitoring\specs\learning-center.spec.js:5:1) 
+1

莫非你提供完整的錯誤追溯?謝謝。 – alecxe

+0

希望tracelog有幫助。我隱藏了一些信息和鏈接。 –

回答

1

感謝@alecxe在追蹤日誌的線索。可能是基本的,但仍然想回答並希望對某人有所幫助。

由於我使用的茉莉花1.3,我發現很多地方覆蓋minijasminenode \ LIB \茉莉花1.3.1.js失敗,但我發現覆蓋最好的地方是下面:

jasmine.Spec.prototype.fail = function (e) { 
    if(e.message && e.message.indexOf('timed out after')>=0) { 
    console.log("EXCEPTION MSG " + JSON.stringify(e, null, 4)); 
    var expectationResult = new jasmine.ExpectationResult({ 
     passed: true, 
     message: 'Skipped for proxy error', 
     trace: { stack: e.stack } 
    }); 
    } 
    else { 
    var expectationResult = new jasmine.ExpectationResult({ 
     passed: false, 
     message: e ? jasmine.util.formatException(e) : 'Exception', 
     trace: { stack: e.stack } 
    });  
    } 
    this.results_.addResult(expectationResult); 
};