数据驱动方法的量角器故障和浏览器处理
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 {
// ...
}
我们正在开发数据驱动的量角器框架(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 {
// ...
}