在赛普拉斯中,因为()函数在哪里?

时间:2019-05-10 10:27:29

标签: chai cypress

写带有chai断言的柏树测试,我应该如何在测试输出中揭示断言背后的原因?我的测试输出清楚地描述了失败的原因,但是没有上下文信息,也没有简单的方法可以直接找到测试脚本中失败的断言的行号。我想念什么?

3 个答案:

答案 0 :(得分:1)

似乎没有提供任何东西,但是确实很简单。然后是一个because()自定义命令,只需将其参数打印到命令日志中,然后返回上一个主题,即可进行链接。

// sby add context to ouput...
Cypress.Commands.add("because", { prevSubject: 'true'}, (subject, options) => { 
    Cypress.log({
        message: options
    });
    return subject;
})

要使用它...

cy.get("input#date").because("today is today").should("have.value", localToday);

那给你...

enter image description here

我还是这个行业的新手,但是我喜欢这个解决方案,因为它流利,提高了输出的清晰度,而且在出现故障时我可以更快地定位代码行。

答案 1 :(得分:0)

使用屏幕截图会回答您的问题。

当测试失败时,Cypress会默认截图(可以通过在配置中放置"screenshotOnRunFailure":false来关闭此行为)。这些屏幕快照位于:cypress / screenshots

屏幕截图捕获了测试describe()it()和失败的特定操作。如果断言失败,它甚至会提到预期的值和检索到的值。

屏幕截图中的这三个输出将为您提供测试失败的确切位置。

答案 2 :(得分:0)

您可以像这样将上下文添加到expect(...).to...样式的断言中:

expect(true).to.eq(true, 'should equal itself')

screenshot of test in Cypress

据我所知,没有办法向.should()样式的断言中添加上下文。