تشتهر Cypress على نطاق واسع بقدراتها على الاختبار الشامل، ولكنها أيضًا أداة قوية لاختبار واجهات برمجة التطبيقات. يعد اختبار واجهة برمجة التطبيقات جزءًا أساسيًا لضمان موثوقية تطبيقات الويب الحديثة وأدائها وأمانها، حيث تعتمد العديد من التطبيقات اليوم بشكل كبير على الخدمات الخلفية وواجهات برمجة التطبيقات. سيرشدك هذا المنشور إلى أساسيات اختبار واجهة برمجة التطبيقات باستخدام Cypress، بما في ذلك إعداد اختبارات واجهة برمجة التطبيقات، وتقديم الطلبات، والتحقق من صحة الاستجابات، وأتمتة العملية.
إذا كان Cypress مثبتًا لديك بالفعل للاختبار الشامل، فأنت جاهز لبدء اختبار واجهة برمجة التطبيقات. إذا لم يكن الأمر كذلك، فاتبع خطوات التثبيت أدناه.
الخطوة 1: تثبيت Cypress
npm install cypress --save-dev
بمجرد التثبيت، يمكنك تشغيل Cypress باستخدام الأمر التالي:
npx cypress open
الخطوة 2: إعداد أول اختبار لواجهة برمجة التطبيقات (API)
يوفر Cypress طريقة cy.request() التي يمكنك استخدامها لإرسال طلبات HTTP. فيما يلي مثال أساسي لاختبار واجهة برمجة التطبيقات (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 مستخدمين.
إليك كيفية تنفيذ طلبات HTTP الشائعة مثل GET وPOST وPUT وDELETE في Cypress.
الحصول على الطلب
تُستخدم طلبات 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:
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'); });
حذف الطلب
يتم استخدام طلبات الحذف لإزالة الموارد. مثال:
cy.request('DELETE', 'https://jsonplaceholder.typicode.com/posts/1') .then((response) => { expect(response.status).to.eq(200); });
بمجرد إتقان طلبات واجهة برمجة التطبيقات الأساسية، يمكنك الانتقال إلى تقنيات اختبار واجهة برمجة التطبيقات الأكثر تقدمًا، مثل التعامل مع المصادقة، واختبار فشل واجهة برمجة التطبيقات، وتسلسل استدعاءات واجهة برمجة التطبيقات.
التعامل مع المصادقة
تتطلب بعض واجهات برمجة التطبيقات المصادقة عبر الرموز المميزة أو مفاتيح واجهة برمجة التطبيقات. يمكن لـ 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); });
هنا، يتم استخدام رأس التفويض لإرسال رمز مميز مع الطلب.
اختبار فشل واجهة برمجة التطبيقات
من الضروري اختبار كيفية عمل واجهة برمجة التطبيقات (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، مما يسمح لك بالتحقق من صحة استجابات الأخطاء.
تسلسل استدعاءات واجهة برمجة التطبيقات
في بعض الأحيان، تحتاج إلى ربط عدة استدعاءات لواجهة برمجة التطبيقات معًا، على سبيل المثال، إنشاء مورد ثم استخدامه في اختبار لاحق:
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 باسترداد هذا المنشور بناءً على المعرف الذي تم إرجاعه من المكالمة الأولى.
لضمان استقرار واجهات برمجة التطبيقات الخاصة بك، من الضروري تشغيل اختبارات واجهة برمجة التطبيقات الخاصة بك كجزء من خط أنابيب التكامل المستمر/النشر المستمر (CI/CD). يمكن دمج Cypress بسهولة في أدوات CI/CD مثل Jenkins أو GitHub Actions أو Travis CI.
إليك مثال على سير عمل GitHub Actions الذي يقوم بتشغيل اختبارات Cypress في كل دفعة:
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) جزءًا أساسيًا لضمان عمل التطبيق الخاص بك بسلاسة، حتى عندما يعتمد على خدمات خارجية أو واجهات برمجة التطبيقات الخلفية. يوفر Cypress طريقة بسيطة لكنها قوية لاختبار واجهات برمجة التطبيقات جنبًا إلى جنب مع اختبارات واجهة المستخدم الخاصة بك، مما يجعله خيارًا ممتازًا للمطورين الذين يعملون مع تطبيقات JavaScript الحديثة. من خلال الاستفادة من ميزات مثل cy.request() والتأكيدات وتكامل CI/CD، يمكنك إنشاء مجموعة اختبار قوية وموثوقة لواجهة برمجة التطبيقات (API) التي تكتشف المشكلات مبكرًا وتضمن جودة واجهات برمجة التطبيقات الخاصة بك.
ابدأ باختبار واجهات برمجة التطبيقات الخاصة بك مع Cypress اليوم، وقم بتحسين سير عمل التطوير الخاص بك من خلال اختبارات تلقائية وموثوقة!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3