通过守夜人中止测试

时间:2015-11-11 16:40:04

标签: javascript unit-testing nightwatch.js

我在Nightwatch中编写一个脚本来测试页面上的特定元素。脚本可能正在测试页面中不存在该元素的URL,在这种情况下,我希望脚本在没有记录任何失败的情况下结束测试。

但是,我似乎无法在不调用失败的情况下尽早中止测试。是否有任何方法可以在通行证上使用Nightwatch测试中止?

以下是我参与的代码的一部分:

//End test if pagination is not present
'Pagination Present' : function (browser) {
  browser
  .execute(function() {
    return document.querySelectorAll("ul[class='pagination']").length;
  }, 
  function(count){
    if (count.value == 0) {
      browser.assert.equal(count.value, 0, "There is no pagination on this page.");
      browser.end();
    }
  })
},

调用browser.end();关闭浏览器,但它会立即重新打开并继续测试。每个案例都失败了,因为给定页面上不存在分页。我想在browser.assert.equal通过后立即结束测试。有没有办法这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用try / catch。

我在某些测试中遇到了同样的问题,我已经让它跳过这样的断言:你试着检查一下,但是如果你找不到这个元素,而不是没有通过测试,我只是在控制台中显示一条消息并退出整个测试:

'Test product\'s UPSs' : function (browser) {        
    try {
       browser.assert.elementPresent('@someElement');          
    }

    catch(err) {           
       console.log('this product has no Special features! Skipping');
       process.exit();
    }
}

如果你有进一步的测试,你知道他们不会失败,你想继续他们,只需省略process.exit()函数。虽然它可能不是最安全的方法,但至少它完成了工作。