【问题标题】:Nightwatch Abort Test on PassNightwatch 中止测试通过
【发布时间】:2015-11-11 16:40:04
【问题描述】:

我正在 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 通过后立即结束测试。有什么办法吗?

【问题讨论】:

    标签: javascript unit-testing nightwatch.js


    【解决方案1】:

    您可以使用 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() 函数。虽然这可能不是最安全的方法,但至少它可以完成工作。

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 2017-04-08
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多