首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Cypress中使用软断言

如何在Cypress中使用软断言
EN

Stack Overflow用户
提问于 2021-02-10 07:03:40
回答 1查看 4.2K关注 0票数 5

我已经配置了npm (npm软断言)的软断言,现在我的package.josn有了“软断言”:"^0.2.3“。

我想使用软断言的功能。

代码语言:javascript
运行
复制
softAssert(actual, expected, msg, ignoreKeys)

但不知道,具体的步骤是什么

示例:当我在代码中使用软断言函数时,会出现以下错误。

如果我像这样用

  1. cy.softAssert(10,12,“预期实际错配并将执行下一行”):不支持,或者如果我使用不同的like
  2. softAssert(10,12方式,“预期实际错配并将执行下一行”):SoftAssert未定义的

有谁能告诉我如何在柏树代码中使用这个'softAssert‘函数?

现在我面临的问题

代码语言:javascript
运行
复制
it('asserts and logs and fails', () => { 
  Cypress.softAssert(10, 12, "expected actual mismatch..."); 
  cy.log("text") 
  Cypress.softAssertAll(); 
}) 

我需要将软断言后的代码作为cy.log("text")在相同的'it‘块中执行,但是当前的测试失败了整个'it’块,而不执行‘cy.log(“文本”)’语句。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 08:17:21

软断言概念非常酷,您可以用最少的实现将它添加到Cypress中。

代码语言:javascript
运行
复制
const jsonAssertion = require("soft-assert")

it('asserts several times and only fails at the end', () => {
  jsonAssertion.softAssert(10, 12, "expected actual mismatch");
  // some more assertions, not causing a failure

  jsonAssertion.softAssertAll();  // Now fail the test if above fails
})

对我来说,在日志中看到每个软断言失败会更好,因此可以添加自定义命令来包装软断言函数。

代码语言:javascript
运行
复制
const jsonAssertion = require("soft-assert")

Cypress.Commands.add('softAssert', (actual, expected, message) => {
  jsonAssertion.softAssert(actual, expected, message)
  if (jsonAssertion.jsonDiffArray.length) {
    jsonAssertion.jsonDiffArray.forEach(diff => {

      const log = Cypress.log({
        name: 'Soft assertion error',
        displayName: 'softAssert',
        message: diff.error.message
      })
    
    })
  }
});
Cypress.Commands.add('softAssertAll', () => jsonAssertion.softAssertAll())


//-- all above can go into /cypress/support/index.js
//-- to save adding it to every test (runs once each test session)



it('asserts and logs but does not fail', () => {
  cy.softAssert(10, 12, "expected actual mismatch...");
  cy.log('text');    // this will run
})

it('asserts and logs and fails', () => {
  cy.softAssert(10, 12, "expected actual mismatch...");
  cy.log('text');    // this will run

  cy.softAssertAll();
})
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66132293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档