Automation 如何在Cypress中使用软断言

Automation 如何在Cypress中使用软断言,automation,cypress,assertion,Automation,Cypress,Assertion,`我已从npm(npm I soft assert)配置了软断言,现在我的package.josn具有“软断言”:“^0.2.3” 我想使用软断言的功能 '软断言(实际、预期、消息、忽略键)' 但不知道,使用它的确切步骤是什么 例如: 当我在代码中使用软断言函数时,出现以下错误 如果我像这样使用 cy.softAssert(10,12,“预期实际不匹配,将执行下一行”):不支持 或者如果我用不同的方式,比如 softAssert(10,12,“预期实际不匹配,将执行下一行”):未定义softAs

`我已从npm(npm I soft assert)配置了软断言,现在我的package.josn具有“软断言”:“^0.2.3”

我想使用软断言的功能 '软断言(实际、预期、消息、忽略键)'

但不知道,使用它的确切步骤是什么

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

如果我像这样使用

  • cy.softAssert(10,12,“预期实际不匹配,将执行下一行”):不支持 或者如果我用不同的方式,比如
  • softAssert(10,12,“预期实际不匹配,将执行下一行”):未定义softAssert
  • 有谁能告诉我如何在cypress代码中使用这个“softAssert”函数并给出一些小例子吗`


    现在我面临的问题是

    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(“text”)语句。

    软断言概念非常酷,您可以将其添加到Cypress中,只需很少的实现

    const jsonAssertion=require(“软断言”)
    它('多次断言,最后才失败',()=>{
    softAssert(10,12,“预期实际不匹配”);
    //更多的断言,不会导致失败
    jsonAssertion.softAssertAll();//如果上述测试失败,则现在测试失败
    })
    
    对我来说,最好在日志中看到每个软断言失败,这样就可以添加自定义命令来包装软断言函数

    const jsonAssertion=require(“软断言”)
    add('softAssert',(实际、预期、消息)=>{
    软断言(实际、预期、消息)
    if(jsonAssertion.jsonDiffArray.length){
    jsonAssertion.jsonDiffArray.forEach(差异=>{
    const log=Cypress.log({
    名称:“软断言错误”,
    displayName:'softAssert',
    消息:diff.error.message
    })
    })
    }
    });
    add('softAssertAll',()=>jsonAssertion.softAssertAll())
    //--所有这些都可以进入/cypress/support/index.js
    //--保存并将其添加到每个测试(每个测试会话运行一次)
    它('断言并记录,但不失败',()=>{
    cy.softAssert(10,12,“预期实际不匹配…”);
    cy.log('text');//这将运行
    })
    它('断言、记录并失败',()=>{
    cy.softAssert(10,12,“预期实际不匹配…”);
    cy.log('text');//这将运行
    cy.softAssertAll();
    })
    
    您可以查看此内容,谢谢您的回复。我曾经使用过它,但是从fixture文件变量功能中检索数据和等待失败了。是否有其他方法,我可以使用它而不在我的index.jsHi Richard中添加任何内容,感谢您提供的信息我现在面临的问题('asserts and logs and fails',()=>{Cypress.softAssert(10,12,“预期实际不匹配,将执行下一行”);cy.log(“text”)Cypress.softAssertAll();})我需要我的代码在软断言之后作为cy.log(“text”)在同一个“it”块中执行,但是当前的测试使整个“it”块失效,而没有执行“cy.log(“text”)语句。我的眼睛在旋转,所以我把它添加到了问题中。我看到了问题,
    Cypress.softAssert()
    函数在测试中是同步的,但是像
    cy.log()
    这样的命令是排队的和异步的(因此测试在它们可以执行之前就结束了)。另外,来自
    Cypress.softAssertAll()
    的日志消息似乎太多了。我会看看它是否可以做得更好。它作为一个自定义命令工作得更好,对上面的代码做了一些小的更改(
    cy
    而不是
    Cypress
    )。