乐闻世界logo
搜索文章和话题

Cypress 如何断言接口请求返回结果?

4 个月前提问
3 个月前修改
浏览次数22

1个答案

1

在Cypress中,您可以使用其内置命令来对接口请求及其返回结果进行断言。通常,您会使用cy.request()来发出HTTP请求,并接收返回的响应。然后,您可以利用Cypress提供的断言库(Chai、Mocha和Sinon)来验证响应的不同方面,包括状态码、响应体、头部等。

这里有几个断言接口请求返回结果的步骤和例子:

  1. 发送请求: 使用cy.request()发送一个GET或POST请求。
javascript
cy.request('GET', 'https://api.example.com/data') .then((response) => { // response 对象包含了所有的响应信息 });
  1. 断言状态码: 您可以使用.should()have.property来断言响应的状态码。
javascript
cy.request('GET', 'https://api.example.com/data') .its('status') .should('equal', 200);
  1. 断言响应体: 对返回的JSON或其他格式的数据进行断言。
javascript
cy.request('GET', 'https://api.example.com/data') .its('body') .should('include', { key: 'value' });
  1. 断言响应头: 检查响应头来确保它们包含了正确的信息。
javascript
cy.request('GET', 'https://api.example.com/data') .its('headers') .its('content-type') .should('include', 'application/json');
  1. 断言响应时间: 验证响应时间是否符合性能预期。
javascript
cy.request('GET', 'https://api.example.com/data') .its('duration') .should('be.lessThan', 1000); // 假设响应时间小于1000ms

以下是一个更完整的例子,它综合了以上几个概念:

javascript
describe('API Test with Cypress', () => { it('Validate the response of the API', () => { cy.request('GET', 'https://api.example.com/data') .then((response) => { // 断言状态码为200 expect(response.status).to.eq(200); // 断言返回的数据包含特定的键值对 expect(response.body).to.have.property('key', 'value'); // 断言响应头中的Content-Type属性 expect(response.headers).to.have.property('content-type', 'application/json'); // 断言响应时间小于1秒 expect(response).to.have.property('duration').below(1000); }); }); });

这样的断言可以确保您的应用程序的接口在集成测试中表现得和预期一样好。这对于测试API的可用性、正确性以及性能是非常重要的。

2024年6月29日 12:07 回复

你的答案