يعد الاختبار المبني على البيانات أسلوبًا قويًا يسمح لك بإجراء نفس الاختبار باستخدام مجموعات متعددة من البيانات. تعتبر هذه الطريقة مفيدة بشكل خاص للتحقق من سلوك التطبيق باستخدام مجموعات الإدخال المختلفة، مما يضمن تغطية شاملة لسيناريوهات مختلفة. في هذا المنشور، سنستكشف كيفية تنفيذ الاختبار المبني على البيانات في Cypress، مع الاستفادة من قدراته لإنشاء اختبارات فعالة وقابلة للصيانة.
يتضمن الاختبار المبني على البيانات فصل منطق الاختبار عن بيانات الاختبار، مما يسمح بتنفيذ الاختبارات عدة مرات بمدخلات مختلفة. يساعد هذا الأسلوب في تحديد حالات الحافة، والتحقق من صحة منطق الأعمال، والتأكد من أن التطبيق يتعامل مع نطاق واسع من البيانات بشكل صحيح.
توفر Cypress عدة طرق لتنفيذ الاختبارات المعتمدة على البيانات، بما في ذلك استخدام المصفوفات والتركيبات والمكتبات الخارجية. دعونا نستكشف هذه الطرق مع الأمثلة.
1. استخدام المصفوفات
يمكنك استخدام المصفوفات لتخزين مجموعات مختلفة من بيانات الاختبار والتكرار عليها باستخدام طريقة forEach.
مثال:
const testData = [ { username: 'user1', password: 'password1' }, { username: 'user2', password: 'password2' }, { username: 'user3', password: 'password3' } ]; describe('Data-Driven Testing with Arrays', () => { testData.forEach((data) => { it(`should log in successfully with username: ${data.username}`, () => { cy.visit('/login'); cy.get('input[name="username"]').type(data.username); cy.get('input[name="password"]').type(data.password); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); }); }); });
2. استخدام التركيبات
المباريات هي ملفات خارجية تخزن بيانات الاختبار بتنسيق JSON. يتيح لك Cypress تحميل ملفات التثبيت واستخدام البيانات في اختباراتك.
مثال:
[ { "username": "user1", "password": "password1" }, { "username": "user2", "password": "password2" }, { "username": "user3", "password": "password3" } ]
describe('Data-Driven Testing with Fixtures', () => { before(() => { cy.fixture('users').then(function (data) { this.users = data; }); }); it('should log in successfully with multiple users', function () { this.users.forEach((user) => { cy.visit('/login'); cy.get('input[name="username"]').type(user.username); cy.get('input[name="password"]').type(user.password); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); cy.visit('/logout'); // Log out after each login }); }); });
3. استخدام المكتبات الخارجية
بالنسبة لسيناريوهات الاختبار المعتمدة على البيانات الأكثر تعقيدًا، يمكنك استخدام مكتبات خارجية مثل لقطات cypress-plugin أو cypress-data-driven.
مثال على بيانات السرو:
npm install cypress-data-driven --save-dev
import dataDriven from 'cypress-data-driven'; const testData = [ { username: 'user1', password: 'password1', expectedUrl: '/dashboard1' }, { username: 'user2', password: 'password2', expectedUrl: '/dashboard2' }, { username: 'user3', password: 'password3', expectedUrl: '/dashboard3' } ]; describe('Data-Driven Testing with External Library', () => { dataDriven(testData).forEach((data) => { it(`should log in successfully with username: ${data.username}`, () => { cy.visit('/login'); cy.get('input[name="username"]').type(data.username); cy.get('input[name="password"]').type(data.password); cy.get('button[type="submit"]').click(); cy.url().should('include', data.expectedUrl); }); }); });
يعد الاختبار المبني على البيانات أسلوبًا قيمًا يعزز تغطية الاختبار وقابلية الصيانة والكفاءة. من خلال الاستفادة من إمكانات Cypress واستخدام المصفوفات أو التركيبات أو المكتبات الخارجية، يمكنك تنفيذ اختبارات قوية تعتمد على البيانات والتي تضمن أن تطبيقك يتعامل مع نطاق واسع من المدخلات بشكل صحيح. ومن خلال اتباع أفضل الممارسات، يمكنك تحسين موثوقية وفعالية اختباراتك.
اختبار سعيد!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3