首页 > 解决方案 > 数据驱动方法的量角器故障和浏览器处理

问题描述

我们正在开发数据驱动的量角器框架(茉莉花),我需要帮助来处理某些故障情况。

我将使用不同的数据集迭代相同的测试,我的页面模块将处理所有验证。

如果它阻止任何失败,我想运行某个功能来清除 cookie,捕获会话详细信息并重新启动浏览器(我确实拥有所有功能)

但 ,

我不确定如何让 it 阻塞失败并触发特定功能,我也想确保触发下一个循环迭代。

browser.restart()- 从来没有在之前或之后驱动的数据中工作过.....

如果我并行运行这些数据驱动(我们可以在并行浏览器中运行相同的测试,但我们不能将每个数据分发到多个浏览器),有没有办法分发?

var dData = requireFile('testData/data.json');

using(dData,async function(data, description) {
   describe( scenario 1++  , function() { 

         it('Load URL' , async function() { })

         it('validate Page1' , async function() { xxxxx })
         it('validate Page2' , async function() { xxxxx })
         it('validate Page3' , async function() { xxxxx })

   }) }

标签: javascripttypescriptprotractordom-eventsdata-driven-tests

解决方案


如果我理解一切正确,你有 3 个问题。我只会回答第一个,一般的 - 如何处理每个it块的结果

听起来,对于您要实现的内容,您应该在 jasmine中使用自定义报告器的优势

更准确地说,您想要做的是:

  • 使用自定义报告器创建模块
  • 在您的配置中注册它。如果您想将任何参数传递给记者,这将是一个提前考虑的好地方
  • 有不同的钩子:jasmine-started、suite-started(描述)、spec-started(it)、suite-done、jasmine-done。不确定你们是否都是这样,但可以肯定的是:spec-done. 这应该是在每个it块之后调用的函数。它将spec对象作为参数。您可以自行探索它,但您需要的是status属性 ( spec.status)。它的价值可以'passed''failed'我相信别人。所以你的逻辑就像
if (spec.status === 'passed') {
  // ...
} else if (spec.status === 'failed') {
  // ...
} else {
  // ...
}

推荐阅读