PyTest: إطار عمل اختبار Python لمهندسي الواجهة الخلفية

0 الأسهم
0
0
0
0

مقدمة

بصفتك مهندس دعم أو مهندس ضمان جودة/اختبار، من المهم ضمان جودة وموثوقية شفرتك البرمجية. إحدى طرق تحقيق ذلك هي استخدام أطر عمل اختبار بايثون لأتمتة عملية الاختبار وتحديد الأخطاء أو المشاكل في شفرتك البرمجية قبل إصدار البرنامج أو نشره.

إنهم يقدمون الفوائد التالية:

  • تعمل أطر الاختبار على تحسين جودة الكود.
  • يوفر الاختبار الآلي الوقت والجهد.
  • تعمل إمكانية إعادة استخدام الكود على تحسين جهود الاختبار وتقليل التكرار.
  • تتكامل أطر عمل اختبار Python بسلاسة مع الأدوات والوحدات والمكتبات الأخرى.

في هذا الدليل التدريجي، ستتعلم كيفية تنفيذ PyTest - أحد أطر عمل اختبار Python الأكثر شيوعًا.

المتطلبات الأساسية

قبل الخوض في تفاصيل أطر اختبار Python، دعنا نركز أولاً على المتطلبات الأساسية لتنفيذ PyTest.

  • تثبيت بايثون: تأكد من تثبيت بايثون على نظامك. يمكنك تنزيل أحدث إصدار من بايثون من موقع بايثون الرسمي.
  • تثبيت Pip: Pip (مُثبّت الحزم لبايثون) هي أداة تُستخدم لإدارة الحزم والمكتبات والتبعيات في بايثون. تتيح لنا تثبيت وإدارة حزم بايثون. تأكد من تثبيت pip على نظامك.

يمكنك التحقق من تثبيت pip من خلال تشغيل الأمر التالي في سطر الأوامر/المحطة الطرفية لديك:

python -m pip --version

أو

python3 -m pip --version

ما هو إطار عمل اختبار Python؟

إطار عمل اختبار بايثون هو مجموعة من الأدوات والمكتبات التي توفر هيكلًا وإرشادات لكتابة وتنفيذ الاختبارات باستخدام بايثون لاختبار الأتمتة. يضمن هذا الإطار أن الكود يلبي معايير الجودة المطلوبة. وهو أساسي ومفيد لكل مطور واجهة خلفية، ومهندس برمجيات، ومهندس DevOps، ومهندس ضمان الجودة/الاختبار. من أطر عمل اختبار بايثون الشهيرة والمستخدمة على نطاق واسع: Pytest، وPyUnit، وDocTest، وTestify، وRobot، وغيرها الكثير.

تنفيذ PyTest

تثبيت PyTest

لبدء استخدام PyTest، عليك تثبيته على نظامك. افتح نافذة الأوامر وشغّل الأمر التالي:

pip install pytest

سيقوم هذا الأمر بتنزيل أحدث إصدار من PyTest وتبعياته وتثبيته.

كتابة عناصر الاختبار

الآن بعد أن تم تثبيت PyTest، فلنبدأ في كتابة بعض حالات اختبار الوحدة الأساسية.

الرجاء إنشاء ملف بايثون جديد وتسميته test_backend.py يعرف هذا الملف حالات الاختبار الخاصة بنا باستخدام صيغة PyTest.

ملاحظة: افتراضيًا، يكتشف PyTest ويُشغّل جميع حالات الاختبار في الملفات التي تبدأ أسماؤها بـ "test_" أو تنتهي بـ "_test". تفحص عملية اكتشاف PyTest المجلد الحالي ومجلداته الفرعية بشكل متكرر بحثًا عن الملفات التي تبدأ بـ "test_" أو تنتهي بـ "_test". ثم تُشغّل الاختبارات في هذه الملفات.

import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5

في المثال أعلاه، عرّفنا أربعة اختبارات وحدة أساسية كدوال: test_addition، وtest_subtraction، وtest_multiplication، وtest_division. تُستخدم الكلمة المفتاحية assert عند تصحيح أخطاء الشيفرة البرمجية، وتتيح لك اختبار ما إذا كان شرط معين في الشيفرة يُعيد القيمة True. إذا لم يكن كذلك، فإنه يُعيد خطأ AssertionError.

تنفيذ حالات الاختبار، تنفيذ اختبارات محددة

لتشغيل الاختبارات، انتقل إلى المجلد الذي قمت بحفظ ملف test_backend.py فيه، ثم قم بتشغيل الأمر التالي في محطتك الطرفية أو سطر الأوامر:

pytest

أو

python -m pytest

المخرجات:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s 

عند استخدام PyTest، لن تحتاج إلى تشغيل كل اختبار يدويًا في ملفك. ستقوم الأداة تلقائيًا بالعثور على جميع حالات الاختبار المحددة وتشغيلها. إذا سارت الأمور على ما يرام وكانت جميع التأكيدات صحيحة، فستحصل على ملخص جيد لنتائج الاختبار، بالإضافة إلى عدد الاختبارات التي تم اجتيازها، كما هو موضح أعلاه.

لنفترض أن أحد الاختبارات فشل في ذلك الوقت، فسنرى الناتج التالي:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F 
================================================== [100%]
FAILURES
==================================================
test_division 
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s 
الاكتشاف التجريبي

يوفر PyTest إمكانيات اكتشاف اختبارات فعّالة تُمكّنك من تنظيم حالات الاختبار لديك بطريقة منظمة. افتراضيًا، يكتشف PyTest جميع حالات الاختبار ويُنفّذها في ملفات تبدأ أسماؤها بـ "test_" أو تنتهي بـ "_test". مع ذلك، يمكنك تخصيص عملية اكتشاف الاختبارات باستخدام خيارات سطر أوامر مُختلفة أو من خلال تهيئة ملف. pytest.ini تخصيص.

على سبيل المثال، يمكنك تحديد دليل محدد للبحث عن وحدات الاختبار عن طريق تشغيل الأمر التالي:

pytest tests/

سيقوم هذا الأمر فقط بتشغيل حالات الاختبار الموجودة في دليل "الاختبارات".

معدات الاختبار

أدوات الاختبار في Pytest هي مكونات رائعة يُمكن إعادة استخدامها لتحديد خط أساس مُتسق لحالات الاختبار. تُعدّ هذه الأدوات مفيدة عند إنشاء مُتطلبات أساسية لاختباراتك وعند تنظيف الموارد بعد انتهائها. يُسهّل PyTest تعريف أدوات الاختبار واستخدامها بشكل رائع.

لتحديد تركيبات الاختبار، يجب عليك استخدام الديكور. @pytest.fixture على سبيل المثال، سيفتح مُثبّت باسم db المُعرّف أدناه اتصال قاعدة بيانات ويغلقه بعد العملية. يُمكننا تعريف هذا المُثبّت كما يلي:

import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()

في هذا المثال، تُحدد عبارة yield الكود الذي سيتم تنفيذه بعد تنفيذ حالات الاختبار. تُستخدم كلمة yield للتحكم في سير دالة المولد، على غرار عبارة return المستخدمة لإرجاع القيم في بايثون.

لاستخدام تركيبات في اختبار، يجب عليك تمريرها كحجة إلى وظيفة الاختبار.

على سبيل المثال:

def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12

في حالة الاختبار هذه، التثبيت قاعدة البيانات للعمل تلقائيا اختبار الاستعلام () يتم حقنه ويتيح لك استخدامه لإجراء عمليات على قاعدة البيانات. تُعدّ التركيبات مفيدة للمطورين لإعداد بيئات اختبار محددة، مثل اتصالات قاعدة البيانات، أو عملاء واجهة برمجة التطبيقات، أو الكائنات التجريبية. باستخدام التركيبات، يمكن للمطورين ضمان عزل الاختبارات وإمكانية تكرارها.

يمكن لمهندسي الاختبار أيضًا استخدام المعدات لإعداد النظام قيد الاختبار، أو إدارة بيانات الاختبار، أو محاكاة السيناريوهات المعقدة.

بالإضافة إلى ذلك، يمكن استخدام الأجهزة لتنظيف الموارد بعد الاختبار، وتحسين الموثوقية، وصيانة مجموعة الاختبار.

نتيجة

في هذا البرنامج التعليمي، تعلمنا كيفية تنفيذ واستخدام PyTest، أحد أشهر أطر عمل اختبار بايثون وأكثرها ثراءً بالميزات، وقدمنا دليلاً خطوة بخطوة لتنفيذه في بايثون. كتابة حالات الاختبار وتحديثها باستمرار أمرٌ أساسي مع تطور قاعدة بياناتك البرمجية. بتخصيص الوقت والجهد في الاختبار، يمكنك تحديد الأخطاء بشكل أسرع، وتحسين جودة الكود، وتقديم برامج أكثر متانة وموثوقية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً