Cypress はエンドツーエンドのテスト機能で広く知られていますが、API をテストするための強力なツールでもあります。今日の多くのアプリケーションはバックエンド サービスと API に大きく依存しているため、API テストは最新の Web アプリケーションの信頼性、パフォーマンス、セキュリティを確保するために不可欠な部分です。この投稿では、API テストの設定、リクエストの作成、応答の検証、プロセスの自動化など、Cypress を使用した API テストの基本を説明します。
エンドツーエンド テスト用に Cypress がすでにインストールされている場合は、API テストを開始する準備ができています。そうでない場合は、以下のインストール手順に従ってください。
ステップ 1: Cypress をインストールする
npm install cypress --save-dev
インストールしたら、次のコマンドで Cypress を実行できます:
npx cypress open
ステップ 2: 最初の API テストを設定する
サイプレスは、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 リクエスト
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 を設定すると、サイプレスは 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