如果解析测试电子邮件花费的时间太长,我该怎么办?
What can I do if parsing a test email is taking too long?
我计划使用 Cypress 和 MailHog 测试确认电子邮件。原则上,一些属性和值应该出现在那里。在大约 200 K 大小的测试邮件中,以下代码完美运行。
it.only('The body of a confirmation mail shall contain strings (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 分钟后仍没有结果。
我在这里有什么选择?
我自己解决了。之所以等这么久,是因为我们要找的值不存在,所以测试失败了。我可以在 cypress.json 文件中设置长度:
{
"defaultCommandTimeout": 60000,
"responseTimeout": 30000,
"requestTimeout": 30000
}
还有一点要注意,.should()
会在失败时重试 - 但它实际上只对异步页面有用。
由于您已经有了完整的文本,请将 .should()
更改为 .then()
,这样不会重试,因此失败会更快。
cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
.mhFirst()
.mhGetBody()
.then(body => {
expect(body).to.contain('Kunden-Nr') // no retry
// etc
我计划使用 Cypress 和 MailHog 测试确认电子邮件。原则上,一些属性和值应该出现在那里。在大约 200 K 大小的测试邮件中,以下代码完美运行。
it.only('The body of a confirmation mail shall contain strings (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 分钟后仍没有结果。
我在这里有什么选择?
我自己解决了。之所以等这么久,是因为我们要找的值不存在,所以测试失败了。我可以在 cypress.json 文件中设置长度:
{
"defaultCommandTimeout": 60000,
"responseTimeout": 30000,
"requestTimeout": 30000
}
还有一点要注意,.should()
会在失败时重试 - 但它实际上只对异步页面有用。
由于您已经有了完整的文本,请将 .should()
更改为 .then()
,这样不会重试,因此失败会更快。
cy.mhGetMailsBySubject('Deine Bestellung bei TODO.de')
.mhFirst()
.mhGetBody()
.then(body => {
expect(body).to.contain('Kunden-Nr') // no retry
// etc