跳过失败的断言 - 赛普拉斯测试

Skiping failed Assertions - Cypress Testing

我对赛普拉斯测试有疑问。

我在 Cypress 上没有太多经验,但我用它来测试一些 API REST 调用,为此我使用 [=37= 进行了 cy.request() ] 然后我得到 JSON 响应。

无论如何,在我的 JSON 响应中,我有两个属性:“hyperlinkHTML”和“hyperlinkPDF”,它们都可能有一个 URL,但有时它们是空的。我需要验证这两个属性,如果其中一个不是 URL 我需要检查另一个,但是如果第一个不是 URL cypress returns 断言失败并停止测试。当断言失败时,有一种方法可以跳过测试步骤吗?

我正在尝试这样的事情:

  if (expect(documents.hyperlinkHTML).to.match(/^(http|https):\/\//))  {
                            let hyperlinkHTML = documents.hyperlinkHTML
                            cy.request({
                                    method:  'GET', 
                                    url: hyperlinkHTML, 
                                    failOnStatusCode: false
                                }).then((response)=> {
                                    expect(response.status).to.eq(200);
                            })
                        }else if 
                            (expect(documents.hyperlinkPDF).to.match(/^(http|https):\/\//))  {
                            let hyperlinkPDF = documents.hyperlinkPDF
                            cy.request({
                                    method:  'GET', 
                                    url: hyperlinkPDF, 
                                    failOnStatusCode: false
                                }).then((response)=> {
                                    expect(response.status).to.eq(200);
                            })
                        }       

但它不断返回断言错误。

如果有人能帮助我,那就太棒了。

无需在 if/else 中使用 expect(),您可以只检查两个响应是否与 RegEx 匹配,如果两者都不匹配,则触发您自己的 expect()失败。我们可以使用 RegExp.test.

进行正则表达式检查
const re = new RegExp(/^(http|https):\/\//)
if (re.test(documents.hyperlinkHTML)) {
  // hyperlinkHTML request
} else if (re.test(documents.hyperlinkPDF)) {
  // hyperlinkPDF request
} else {
  // Assertion that will always fail because hyperlinkHTML and hyperlinkPDF have already been evaluated to false.
  expect(re.test(documents.hyperlinkHTML) || re.test(documents.hyperlinkPDF)).to.eql(true);
}

您也可以在 if/else 之前执行 expect() 语句,但我更喜欢这种结构的明确性质。

条件测试是 anti-pattern 自动化质量保证 (read more here) 从外观上看,您收到了一个文件,您是否偶然尝试使用相同的断言来测试两件事?我建议在两个单独的测试中潜水。 同样对于自动化 API 测试,我建议使用 Postman,它的自动化请求链非常适合此类场景。希望我有所帮助!