【问题标题】:Conditional check for response in Cypress赛普拉斯响应的条件检查
【发布时间】:2021-10-11 13:11:46
【问题描述】:

我需要提出一个条件: 如果响应体不符合标准,我需要

cy.log(JSON.stringify(res))

但是我不知道该怎么做。

【问题讨论】:

  • 您希望申请的条件是什么?
  • 我的开发人员说,当响应不符合条件时,最好查看 cy.log(JSON.stringify(res))response。我问是否在404的情况下?他说没必要。仅在响应不符合标准的情况下
  • 您在 if-else 中设置的标准是什么。是一些响应代码还是一些响应正文数据或响应标头或其他什么?
  • 响应正文。添加屏幕截图
  • 所以,基本上他想查看日志 {"body":{"name":"VehicleNotFoundException","message":"Vehicle not found.",:"...} 以防万一响应正文不符合条件

标签: javascript node.js cypress


【解决方案1】:

你可以这样写:

cy.request({
  body: {},
  failOnStatusCode: false,
}).then((res) => {
  if (res.status == 404) {
    cy.log(JSON.stringify(res.body)) //prints the response body
    cy.log(res.body.name) //prints name
    cy.log(res.body.message) //prints message
  } else {
    //Do Something else
  }
})

【讨论】:

    【解决方案2】:

    如果任何条件不合格,您可以使用fail event 记录您的回复。

    cy.request({
      ...
    })
    .then(res => {
    
      Cypress.once('fail', (error, runnable) => {
        cy.log(JSON.stringify(res))
        throw error // throw error to have test still fail
      })
    
      expect(...
      expect(...
      expect(...
    })
    

    【讨论】:

      最近更新 更多