2

我计划用 Cypress 和 MailHog 测试确认电子邮件。原则上,那里应该存在一些属性和值。在大小约为 200 K 的测试邮件中,以下代码完美运行。

it.only('确认邮件的正文应包含字符串 (Kaufland)', () => {

    cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
      .mhFirst()
      .mhGetBody()
      .should('contain', 'Kunden-Nr')
      .should('contain', 'Bestelldatum')
      .should('contain', 'Bestellnummer')
      .should('contain', 'Zwischensumme')
      .should('contain', 'Versandkosten')
      .should('contain', 'Gesamtpreis')
      .should('contain', 'Lieferadresse')
      .should('contain', 'Rechnungsadresse')
      .should('contain', 'Widerrufsbelehrung')
  })

现在,我有另一个客户的电子邮件,它有点笨重,而且非常复杂和分层。桌子上的桌子。但是,它的大小也只有 324K。

当第一个客户的邮件在几秒钟内被检查出来时,Cypress 在解析第二封邮件时挂断,或者超过 2 分钟后仍然没有结果。

我在这里有什么选择?

4

2 回答 2

1

需要注意的另一件事是,.should()当它失败时会重试 - 但它实际上只对异步页面有用。

由于您已经拥有可用的全文,因此更改.should().then()which 不会重试,因此会更快地失败。

cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
  .mhFirst()
  .mhGetBody()
  .then(body => {
    expect(body).to.contain('Kunden-Nr')  //  no retry 
    // etc
于 2022-02-22T12:11:10.477 回答
1

我自己解决了。漫长等待的原因是我们要找的值不存在,所以测试失败。我可以在 cypress.json 文件中设置长度:

{
  "defaultCommandTimeout": 60000,
  "responseTimeout": 30000,
  "requestTimeout": 30000
}
于 2022-02-22T07:25:33.683 回答