3

每当在远程服务器上运行时出现步骤失败,我想捕获失败的步骤,然后继续运行剩余的场景。然后将捕获的步骤包含在文件中以用于报告目的。这是一种可能吗?我在其他地方看到的所有回复都只是说你应该在继续之前修复测试。我同意,但我只希望测试在本地运行时停止,而不是远程运行。

➜ customer git:(pat104) ✗ cucumber.js -f progress (pat104⚡) ...F-----Failed scenario: View and select first contact from contact history ...F-Failed scenario: View and select a contact from multiple contacts in history ..................................................F---Failed scenario: Navigating to profile with url and enrollmentId ...................................................F-Failed scenario: Successful MDN Search with 1 result returned. Tech Selects and continues .............FFailed scenario: Successful MDN with multiple results

4

3 回答 3

3

事实证明,其中一个步骤定义错误地使用了 .waitForExist。测试是这样写的:

this.browser
        .waitForExist('#someElement', 1000, callback)

回调不是 .waitForExist 的参数,重写为:

.waitForExist('#someElement',1000).then(function (exists) {
            assert.equal(exists, true, callback);
        })
于 2015-08-03T20:22:06.273 回答
0

好吧,您需要使用callback.fail(e)如下方式在测试本身中进行管理。您可以使用grunt-cucumberjs 之类的库将这些错误添加到漂亮的 HTML 报告中。

this.Then(/^the save to wallet button reflects the offer is saved$/, function (callback) {
        merchantPage(this.nemo).doStuff().then(function () {
            callback();
        }, function (e) {
            callback.fail(e); //add this to report
        });
});

或者您可以使用Hooks并检查场景是否失败并报告(截屏或添加日志记录等)

 this.After(function (scenario, callback) {
        var driver = this.nemo.driver;
        if(scenario.isFailed()){
            driver.takeScreenshot().then(function (buffer) {
                scenario.attach(new Buffer(buffer, 'base64').toString('binary'), 'image/png');
            });
        }
        driver.quit().then(function () {
                callback();
       });
 });
于 2015-07-31T15:44:57.290 回答
0

这是默认行为,不是吗?示例命令

cucumber.js -f json > cucumberOutput.json
于 2015-07-30T20:09:11.340 回答