数据驱动方法的量角器故障和浏览器处理

Protractor failure and browser handling on data driven approach

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

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

如果任何阻止失败,我想要运行清除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 })

   }) }

如果我没看错的话,你大概有 3 个问题。我只会回答第一个一般性问题——如何处理每个 it

的结果

听起来您应该利用 custom reporter in jasmine

来实现您想要实现的功能

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

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