Cypress는 엔드투엔드 테스트 기능으로 널리 알려져 있지만 API 테스트를 위한 강력한 도구이기도 합니다. 오늘날 많은 애플리케이션이 백엔드 서비스 및 API에 크게 의존하기 때문에 API 테스트는 최신 웹 애플리케이션의 안정성, 성능 및 보안을 보장하는 데 필수적인 부분입니다. 이 게시물에서는 API 테스트 설정, 요청 생성, 응답 검증, 프로세스 자동화 등 Cypress를 사용한 API 테스트의 기본 사항을 안내합니다.
종단 간 테스트를 위해 이미 Cypress를 설치했다면 API 테스트를 시작할 준비가 된 것입니다. 그렇지 않은 경우 아래 설치 단계를 따르세요.
1단계: Cypress 설치
npm install cypress --save-dev
설치가 완료되면 다음 명령을 사용하여 Cypress를 실행할 수 있습니다.
npx cypress open
2단계: 첫 번째 API 테스트 설정
Cypress는 HTTP 요청을 보내는 데 사용할 수 있는 cy.request() 메서드를 제공합니다. 다음은 사용자 목록을 반환하는 API를 테스트하는 기본 예입니다.
describe('API Testing with Cypress', () => { it('should retrieve a list of users', () => { cy.request('GET', 'https://jsonplaceholder.typicode.com/users') .then((response) => { // Validate the status code expect(response.status).to.eq(200); // Validate the response body expect(response.body).to.have.length(10); expect(response.body[0]).to.have.property('name'); }); }); });
이 예에서는 사용자 목록을 검색하기 위한 GET 요청을 테스트하고 있습니다. Cypress는 응답 상태 코드의 유효성을 검사하고 응답 본문에 10명의 사용자가 포함되어 있는지 확인합니다.
Cypress에서 GET, POST, PUT, DELETE와 같은 일반적인 HTTP 요청을 수행하는 방법은 다음과 같습니다.
요청 받기
GET 요청은 서버에서 데이터를 검색하는 데 사용됩니다. 예를 들어:
cy.request('GET', 'https://jsonplaceholder.typicode.com/posts/1') .then((response) => { expect(response.status).to.eq(200); expect(response.body).to.have.property('id', 1); });
POST 요청
POST 요청은 서버에 새 리소스를 생성하는 데 사용됩니다. POST 요청을 테스트하는 방법은 다음과 같습니다.
cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', { title: 'New Post', body: 'This is the content of the new post.', userId: 1 }) .then((response) => { expect(response.status).to.eq(201); expect(response.body).to.have.property('title', 'New Post'); });
PUT 요청
PUT 요청은 기존 리소스를 업데이트하는 데 사용됩니다. 예:
cy.request('PUT', 'https://jsonplaceholder.typicode.com/posts/1', { id: 1, title: 'Updated Post Title', body: 'Updated content', userId: 1 }) .then((response) => { expect(response.status).to.eq(200); expect(response.body).to.have.property('title', 'Updated Post Title'); });
삭제 요청
DELETE 요청은 리소스를 제거하는 데 사용됩니다. 예:
cy.request('DELETE', 'https://jsonplaceholder.typicode.com/posts/1') .then((response) => { expect(response.status).to.eq(200); });
기본 API 요청을 마스터한 후에는 인증 처리, API 실패 테스트, API 호출 연결과 같은 고급 API 테스트 기술로 넘어갈 수 있습니다.
인증 처리
일부 API에는 토큰이나 API 키를 통한 인증이 필요합니다. Cypress는 사용자 정의 헤더를 설정하여 인증을 처리할 수 있습니다. 예를 들어:
cy.request({ method: 'GET', url: 'https://api.example.com/protected', headers: { Authorization: `Bearer ${Cypress.env('auth_token')}` } }) .then((response) => { expect(response.status).to.eq(200); });
여기서 Authorization 헤더는 요청과 함께 토큰을 보내는 데 사용됩니다.
API 실패 테스트
잘못된 입력이나 리소스 누락 등 문제가 발생할 때 API가 어떻게 작동하는지 테스트하는 것이 중요합니다. 예를 들어 404 오류 테스트:
cy.request({ method: 'GET', url: 'https://jsonplaceholder.typicode.com/posts/9999', failOnStatusCode: false }) .then((response) => { expect(response.status).to.eq(404); });
failOnStatusCode: false를 설정하면 Cypress는 2xx가 아닌 응답에 대해 자동으로 테스트에 실패하지 않으므로 오류 응답을 확인할 수 있습니다.
API 호출 연결
예를 들어 리소스를 생성한 후 후속 테스트에서 이를 사용하는 등 여러 API 호출을 함께 연결해야 하는 경우도 있습니다.
cy.request('POST', 'https://jsonplaceholder.typicode.com/posts', { title: 'Post for chaining', body: 'Chained post content', userId: 1 }).then((postResponse) => { cy.request('GET', `https://jsonplaceholder.typicode.com/posts/${postResponse.body.id}`) .then((getResponse) => { expect(getResponse.body).to.have.property('title', 'Post for chaining'); }); });
이 예에서 POST 요청은 새 게시물을 생성하고 GET 요청은 첫 번째 호출에서 반환된 ID를 기반으로 해당 게시물을 검색합니다.
API의 안정성을 보장하려면 CI/CD(지속적 통합/지속적 배포) 파이프라인의 일부로 API 테스트를 실행하는 것이 중요합니다. Cypress는 Jenkins, GitHub Actions 또는 Travis CI와 같은 CI/CD 도구에 쉽게 통합될 수 있습니다.
다음은 푸시할 때마다 Cypress 테스트를 실행하는 GitHub Actions 워크플로의 예입니다.
name: CI on: push: branches: - main jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install dependencies run: npm install - name: Run Cypress tests run: npx cypress run
이 워크플로는 코드가 메인 브랜치에 푸시될 때마다 API 테스트가 자동으로 실행되도록 보장합니다.
API 테스트의 신뢰성, 유지 관리 및 효율성을 보장하려면 다음 모범 사례를 따르세요.
API 테스트는 외부 서비스나 백엔드 API에 의존하는 경우에도 애플리케이션이 원활하게 작동하는지 확인하는 데 필수적인 부분입니다. Cypress는 UI 테스트와 함께 API를 테스트하는 간단하면서도 강력한 방법을 제공하므로 최신 JavaScript 애플리케이션으로 작업하는 개발자에게 탁월한 선택입니다. cy.request(), 어설션, CI/CD 통합과 같은 기능을 활용하면 문제를 조기에 파악하고 API 품질을 보장하는 강력하고 안정적인 API 테스트 모음을 구축할 수 있습니다.
지금 Cypress로 API 테스트를 시작하고 자동화되고 안정적인 테스트로 개발 워크플로를 개선하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3