如何在 Cypress 中获得 POST API 响应?
How to get POST API response in Cypress?
我正在开发一个使用 Cypress 实现自动化的项目。在这个项目中,我需要为患者创建订单。当我单击提交按钮时,它将使用 POST 方法调用以下 API https://ibis-dev.droicelabs.us/api/dispenser/orders/
和 return 我想要获得的唯一订单。
我已经注册了 cy.intercept
我的测试是这样的:
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
点击提交按钮时我使用了:
cy.clickOnElementUsingXpath(practicePageSelectors.submit_CreateOrderButton); // click on submit button
cy.wait('@ordersCall')
.its('response.body')
.then((body) => {
// parsing might be not needed always, depends on the api response
const bodyData = JSON.parse(body)
cy.log(bodyData)
})
但它 return 出现以下错误:
Timed out retrying after 5000ms: cy.wait() timed out waiting 5000ms for the 1st request to the route: ordersCall. No request ever occurred in cy.wait('@ordersCall')
谁能帮我弄一个orderID?有没有其他方式获取orderID?
检查问题评论中提供的图像后,错误如下:您在 Cypress 测试中的拦截命令正在等待向您的 DEV 环境发出请求,但是从控制台查看您的最后一张图像Cypress 测试运行程序正在向 QA 环境提出您的请求。
所以你要么必须像这样调整你的拦截器:
cy.intercept({
method: 'POST',
url: 'https://ibis-qa.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
或考虑使用相对路径进行API调用以独立于环境:
cy.intercept({
method: 'POST',
url: '/api/dispenser/orders/',
}).as('ordersCall')
我正在开发一个使用 Cypress 实现自动化的项目。在这个项目中,我需要为患者创建订单。当我单击提交按钮时,它将使用 POST 方法调用以下 API https://ibis-dev.droicelabs.us/api/dispenser/orders/
和 return 我想要获得的唯一订单。
我已经注册了 cy.intercept
我的测试是这样的:
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
点击提交按钮时我使用了:
cy.clickOnElementUsingXpath(practicePageSelectors.submit_CreateOrderButton); // click on submit button
cy.wait('@ordersCall')
.its('response.body')
.then((body) => {
// parsing might be not needed always, depends on the api response
const bodyData = JSON.parse(body)
cy.log(bodyData)
})
但它 return 出现以下错误:
Timed out retrying after 5000ms: cy.wait() timed out waiting 5000ms for the 1st request to the route: ordersCall. No request ever occurred in cy.wait('@ordersCall')
谁能帮我弄一个orderID?有没有其他方式获取orderID?
检查问题评论中提供的图像后,错误如下:您在 Cypress 测试中的拦截命令正在等待向您的 DEV 环境发出请求,但是从控制台查看您的最后一张图像Cypress 测试运行程序正在向 QA 环境提出您的请求。
所以你要么必须像这样调整你的拦截器:
cy.intercept({
method: 'POST',
url: 'https://ibis-qa.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
或考虑使用相对路径进行API调用以独立于环境:
cy.intercept({
method: 'POST',
url: '/api/dispenser/orders/',
}).as('ordersCall')