我们正在开发数据驱动的量角器框架(jasmine(,我需要帮助处理某些失败场景。
我将使用不同的数据集迭代相同的测试,我的Page模块将处理所有验证。
如果任何it块失败,我想运行特定的功能来清除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
块的结果
听起来,对于您正在尝试实现的内容,您应该在jasmine 中使用自定义报告程序的优势
更确切地说,你想做的是:
- 使用自定义报告程序创建模块
- 在您的配置中注册它。如果你想把任何参数传递给记者,这将是一个提前思考的好地方
- 有不同的挂钩:jasmine启动,suite启动(描述(,spec启动(it(,suite完成,jasmine完成。不确定你们是否都是,但有一点是肯定的:
spec-done
。这应该是将在每个it
块之后调用的函数。它将以spec
对象为参数。你可以自己探索它,但你需要的是status
属性(spec.status
(。它的值可以是'passed'
,'failed'
,我相信其他的。所以你的逻辑会是
if (spec.status === 'passed') {
// ...
} else if (spec.status === 'failed') {
// ...
} else {
// ...
}