随着前端开发的发展,越来越多的项目需要前端开发人员来进行接口自动化测试。Cypress 是一个JavaScript 端对端测试框架,它不仅可以用于测试前端功能,还可以用于测试 API 接口。在本篇文章中,我们将介绍如何使用 Cypress 进行 API 接口自动化测试。
安装 Cypress
首先,我们需要安装 Cypress:
npm install cypress --save-dev
安装完成后,Cypress 就可以使用了。
编写测试用例
Cypress 的测试用例通常放在 cypress/integration 目录下。首先,我们需要创建一个 .spec.js 的测试文件。然后,我们就可以开始编写测试用例了。
发送请求
我们使用 Cypress 的 request 命令来发送请求,并断言响应是否符合预期。
describe('API 接口测试', () => { it('获取用户信息', () => { cy.request('https://jsonplaceholder.typicode.com/users/1') .then((response) => { expect(response.status).to.eq(200) expect(response.body.name).to.eq('Leanne Graham') }) }) })
在上面的测试用例中,我们向 https://jsonplaceholder.typicode.com/users/1 发送了一个 GET 请求,并断言响应的状态码为 200,以及响应的 body 中的 name 属性是否符合预期。如果请求成功,并且响应符合预期,测试用例就会通过。
设置请求头
有时候我们需要在请求头中设置额外的信息,比如 token、user-agent等等。我们可以使用 .set() 方法来设置请求头。
describe('API 接口测试', () => { it('设置请求头', () => { cy.request({ method: 'POST', url: 'https://jsonplaceholder.typicode.com/posts', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer myToken' }, body: { title: 'My Title', body: 'My Body', userId: 1 } }).then((response) => { expect(response.status).to.eq(201) expect(response.body.title).to.eq('My Title') expect(response.body.body).to.eq('My Body') }) }) })
在上面的测试用例中,我们向 https://jsonplaceholder.typicode.com/posts 发送了一个 POST 请求,并设置了请求头信息。测试用例中使用了 .set() 方法进行设置。如果请求成功,并且响应符合预期,测试用例就会通过。
高级用法
Cypress 还有一些高级用法,比如通过 .wrap() 方法将请求转换为可链式操作的对象,以及将网络请求拦截并模拟响应等等。
describe('API 接口测试', () => { it('高级用法', () => { cy.request({ method: 'GET', url: 'https://jsonplaceholder.typicode.com/users', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer myToken' } }) .then((response) => { cy.wrap(response.body[0]) .should((user) => { expect(user.id).to.eq(1) }) cy.intercept('GET', 'https://jsonplaceholder.typicode.com/users', { statusCode: 200, body: [ { id: 2, name: 'Jack' }, { id: 3, name: 'Rose' } ] }).as('getUsers') cy.visit('/') cy.wait('@getUsers') cy.contains('Jack') cy.contains('Rose') }) }) })
在上面的测试用例中,我们使用了 .wrap() 方法将请求转换为可链式操作的对象,然后使用 should() 方法对请求的响应内容进行断言。接下来,我们还使用了 cy.intercept() 命令模拟了一个网络请求,并使用 as() 方法给这个请求命名,以便我们后续可以对这个请求进行拦截,并模拟响应。最后,我们还利用 cy.wait() 命令等待模拟请求完成,然后使用 cy.contains() 命令对响应内容进行断言。
总结
本篇文章中,我们介绍了如何使用 Cypress 进行 API 接口自动化测试,并通过示例代码展示了如何发送请求、设置请求头、以及一些高级用法。希望能对您在前端开发过程中进行自动化测试有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6590f225eb4cecbf2d630d37