【问题标题】:Soft assert or something similar in Cypress赛普拉斯中的软断言或类似的东西
【发布时间】:2021-09-23 17:05:11
【问题描述】:

在我的测试结束时,我正在验证多个值以查看它们是否在表单中正确捕获。我正在使用期望语句。我意识到如果一个期望失败,休息将不会执行。 所有这些验证都是单个测试用例的一部分。我确实希望我的测试用例被标记为失败,即使一个期望失败但希望执行所有期望语句。所以我真的不能把它们分开。有替代方案吗?软断言是否适用于赛普拉斯?

verifyRoledetails(testobject) {

    cy.contains('h3','Role details').nextUntil('button').should(($roledetails)=> {

    expect($roledetails.children('label').get(0).innerText).to.eq('Role title');
    expect($roledetails.children('p').get(0).innerText).to.eq(testobject.role_details.title);

    expect($roledetails.children('label').get(1).innerText).to.eq('Where is the role based');
    expect($roledetails.children('p').get(1).innerText).to.eq(testobject.role_details.role_basedat);

 })
};

【问题讨论】:

标签: mocha.js cypress chai assertion


【解决方案1】:

请参阅此答案,它提供了使用包soft-assert 的直接方法

const jsonAssertion = require("soft-assert")

verifyRoledetails(testobject) {

  cy.contains('h3','Role details').nextUntil('button')
    .should(($roledetails)=> {

      const label1Text = $roledetails.children('label').get(0).innerText;
      jsonAssertion.softAssert(label1Text, 'Role title');

      const p1Text = $roledetails.children('p').get(0).innerText;
      jsonAssertion.softAssert(p1Text, testobject.role_details.title);

      const label2Text = $roledetails.children('label').get(1).innerText;
      jsonAssertion.softAssert(label2Text, 'Where is the role based');

      const p2Text = $roledetails.children('p').get(1).innerText;
      jsonAssertion.softAssert(p2Text, testobject.role_details.role_basedat);

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

但就格式而言,这有点失败。

要坚持expect().matcher() 模式,请尝试@alfonso-presa/soft-assert

const { proxy, flush } = require("@alfonso-presa/soft-assert");
const { expect } = require("chai");
const softExpect = proxy(expect);

verifyRoledetails(testobject) {

  cy.contains('h3','Role details').nextUntil('button')
    .should(($roledetails)=> {

      const label1Text = $roledetails.children('label').get(0).innerText;
      softExpect(label1Text).to.eq('Role title');

      const p1Text = $roledetails.children('p').get(0).innerText;
      softExpect(p1Text).to.eq(testobject.role_details.title);

      const label2Text = $roledetails.children('label').get(1).innerText;
      softExpect(label2Text).to.eq('Where is the role based');

      const p2Text = $roledetails.children('p').get(1).innerText;
      softExpect(p2Text).to.eq(testobject.role_details.role_basedat);

      flush()   // Now fail the test if above fails
    })
})

【讨论】:

  • 感谢您抽出宝贵时间回复我的问题。我会试试这个。
猜你喜欢
  • 2021-12-22
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多