Cypress로 API를 테스트하는 방법
오늘의 "Pinches of Cypress"에서 Cypress.io를 사용하여 API를 테스트하는 방법에 대해 알아보십시오.
설명을 위해 API 테스트 연구를 돕기 위해 에서 만든 프로젝트인 ServeRest 을 사용할 것입니다.
이 게시물은 GET 요청에만 초점을 맞출 것입니다.
ServeRest의 기능 중 일부는 사용자, 제품 및 카트 검색입니다.
사용자 검색 테스트부터 시작하겠습니다.
describe('GET users', () => {
it('correctly gets users', () => {
cy.request({
method: 'GET',
url: 'http://localhost:3000/usuarios'
}).then((response) => {
expect(response.status).to.equal(200);
expect(response.body.usuarios[0].nome).to.equal('Fulano da Silva')
expect(response.body.usuarios[0].email).to.equal('[email protected]')
})
})
})
Note: the endpoints and body responses from ServeRest are in Portuguese. Sorry about that!
위의 코드 조각에서 볼 수 있듯이 응답 상태가 성공적인지(
200
) 확인하는 것 외에도 응답 본문의 구조를 확인하여 PT의 이름( nome
-BR) 및 반환된 첫 번째 사용자의 이메일은 예상대로입니다.이제 첫 번째 제품이 아닌 두 개 이상의 제품을 확인하려는 제품 검색 테스트를 살펴보겠습니다.
describe('GET products', () => {
it('correctly gets products', () => {
const expectedResult = [
{
name: 'Logitech MX Vertical',
description: 'Mouse',
price: 470,
quantity: 382
},
{
name: 'Samsung 60 polegadas',
description: 'TV',
price: 5240,
quantity: 49977
}
]
cy.request({
method: 'GET',
url: 'http://localhost:3000/produtos'
}).then((response) => {
expect(response.status).to.equal(200);
response.body.produtos.forEach((product, index) => {
expect(product.nome).to.equal(expectedResult[index].name)
expect(product.descricao).to.equal(expectedResult[index].description)
expect(product.preco).to.equal(expectedResult[index].price)
expect(product.quantidade).to.equal(expectedResult[index].quantity)
})
})
})
})
위의 예에서 예상 결과로 배열을 정의합니다(이는 고정 장치에서 올 수도 있지만 다른 게시물에서 이에 대해 설명하겠습니다).
배열에는 이름, 설명, 가격 및 수량 속성(PT-BR의
nome
, descricao
, preco
및 quantidade
)이 있는 두 개의 개체가 포함됩니다.마지막으로
GET
엔드포인트에 /products
요청을 하고 요청이 반환되면 응답의 성공 상태를 확인하고 응답 본문에 반환된 모든 제품을 반복합니다(JavaScript 사용 forEach
기능) name
, description
, price
및 quantity
가 예상 결과와 일치하는지 확인합니다.마지막 예로서 특정 총 수량을 queryString으로 전달하여 장바구니를 검색하는 테스트를 살펴보겠습니다.
describe('GET carts', () => {
it('correctly gets carts by total quantity', () => {
cy.request({
method: 'GET',
url: 'http://localhost:3000/carrinhos?quantidadeTotal=3'
}).then((response) => {
expect(response.status).to.equal(200);
expect(response.body.carrinhos.length).to.equal(1)
})
})
})
위의 테스트에서는 물론 성공 상태와 함께 응답 본문(
length
속성 사용)에서 카트 배열에 하나의 카트만 반환되었는지 확인합니다. 😉위의 세 가지 테스트를 로컬에서 실행하면 모두 통과했으며 단 146ms 만에 통과했습니다. 🚀
계속해서 피드백을 수집하고 다음 포스트를 위한 백로그를 작성하고 있습니다. 향후 콘텐츠에서 다루었으면 하는 내용을 댓글로 남겨주세요.
이 게시물은 원래 Talking About Testing 블로그에 포르투갈어로 게시되었습니다.
Cypress를 사용한 테스트 자동화에 대해 배우고 싶습니까? Udemy에서 내 온라인 과정을 알아보십시오.
Spoiler: in 2021, there will be an API testing with Cypress course at the Talking About Testing school. Stay tuned!
Reference
이 문제에 관하여(Cypress로 API를 테스트하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/walmyrlimaesilv/how-to-check-the-body-structure-of-a-json-scheme-with-cypress-1lj5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)