4D Training & Consultancy

تطوير البرمجيات

اختبار شيفرة Python باستخدام pytest

وجود مجموعة اختبارات فعالة هو الفارق بين تغيير يُنشر وتغيير ينتظر. يبني هذا البرنامج تلك المجموعة باستخدام pytest: الـfixtures ونطاقاتها والحالات المُعامَلة وmonkeypatch والمحاكاة وحدود تغطية يصعب الالتفاف عليها وتشغيل سريع في التكامل المستمر ومنهج لتشخيص الاختبارات المتذبذبة.

3 أيامتنفيذ داخلي أو افتراضي أو مخصصفرق مؤسسية ومجموعات مهنيةالمستوى: متوسط

نظرة عامة

تعلم عملي قابل للتطبيق في بيئة العمل.

نادراً ما ترفض الفرق الاختبار من حيث المبدأ، لكنها تتخلى عنه لأن المجموعة صارت بطيئة وهشة ومليئة باختبارات تفشل لأسباب لا علاقة لها بالتغيير قيد المراجعة. يبني هذا البرنامج مجموعة اختبارات تظل جديرة بالتشغيل. يكتب المشاركون اختبارات تركز على السلوك، ويستبدلون بيانات الاختبار المشتركة القابلة للتغيير بـfixtures ومصانع بيانات، ويغطون الحالات الحدية عبر parametrize وHypothesis، ويعزلون قواعد البيانات والساعات واستدعاءات HTTP. ويعالج اليوم الأخير التذبذب ونسبة التغطية المضللة والشيفرة القديمة بلا اختبارات.

المتطلبات المسبقة

القدرة على كتابة دوال وأصناف ووحدات Python بارتياح، مع إلمام بـGit وتشغيل الأوامر في الطرفية.

الأهداف

  • كتابة اختبارات pytest مركزة تتحقق من السلوك لا من تفاصيل التنفيذ.
  • تنظيم الـfixtures ونطاقاتها وملف conftest.py لإبقاء بيانات الاختبار معزولة وقابلة لإعادة الاستخدام.
  • تغطية الحالات الحدية وحالات الخطأ عبر parametrize وpytest.raises وHypothesis.
  • عزل قواعد البيانات والساعات وخدمات HTTP باستخدام monkeypatch والبدائل والمحاكاة المقيدة بالتوقيع.
  • تحديد حد أدنى للتغطية وميزانية زمنية للمجموعة يفرضهما التكامل المستمر على كل طلب دمج.
  • تشخيص السبب الجذري للاختبار المتذبذب واتخاذ قرار بإصلاحه أو عزله أو حذفه.

الفئة المستهدفة

  • مطورو Python الذين يُدخلون الاختبارات إلى شيفرة غير مختبَرة
  • مهندسو ضمان الجودة المنتقلون من الفحص اليدوي إلى مجموعات اختبار آلية
  • مهندسو البيانات الذين يتحققون من منطق التحويل ومخرجات خطوط المعالجة
  • مهندسو DevOps الذين يربطون بوابات الاختبار بخطوط البناء والنشر
  • القادة التقنيون الذين يضعون تعريف الإنجاز لفرقهم
  • المطورون الذين يصونون شيفرة Python قديمة لا يجرؤ أحد على إعادة هيكلتها

محاور البرنامج

هيكل واضح لرحلة التعلم.

محاور البرنامج

تظهر محاور البرنامج في صندوق واحد بدلاً من تحويل كل سطر إلى وحدة منفصلة.

الوحدة 1: مجموعة اختبارات تستحق كلفتها

تأكيدات pytest واكتشاف الاختبارات وقراءة مخرجات الفشل

التهيئة والتنفيذ والتحقق مع اقتصار كل اختبار على سلوك واحد

رسم حدود اختبارات الوحدة والتكامل والاختبار الشامل في مشروع Python

تحديد ما لا ينبغي اختباره وتجنب التحقق من التفاصيل الداخلية

الوحدة 2: الـfixtures وبيانات الاختبار

الـfixtures ونطاقات الدالة والجلسة والتنظيف باستخدام yield

ملف conftest.py ومشاركة الـfixtures عبر حزمة الاختبارات

استخدام tmp_path وtmp_path_factory لعزل نظام الملفات بين الاختبارات

مصانع البيانات والبنّاؤون بدل كتلة بيانات اختبار مشتركة ضخمة

الوحدة 3: التعميم بالمعاملات وتغطية الحالات الحدية

استخدام parametrize للحالات الجدولية والقيم الحدية وأمثلة الانحدار

التعميم المتراكب والمعرفات المخصصة وأسماء اختبارات مقروءة في التقارير

الاختبار القائم على الخصائص عبر Hypothesis لفضاءات إدخال يتعذر حصرها

التحقق من الاستثناءات والتحذيرات ورسائل الخطأ باستخدام pytest.raises

الوحدة 4: عزل الاعتماديات: المحاكاة والبدائل والكعوب

استخدام monkeypatch لمتغيرات البيئة والساعة وسمات الوحدات

unittest.mock مع autospec والتحقق من الاستدعاءات دون الإفراط في التقييد

محاكاة حركة HTTP عبر responses أو respx بدل الخدمات الحية

اختبارات قواعد البيانات بالمعاملات والتراجع والمخططات المؤقتة

الوحدة 5: التغطية والسرعة والتكامل المستمر

pytest-cov وتغطية الفروع ووضع حد أدنى يتعذر التحايل عليه

pytest-xdist واختيار الاختبارات والالتزام بميزانية زمنية للمجموعة

الوسوم وفصل الاختبارات البطيئة وتشغيل المجموعة الفرعية المناسبة محلياً

ربط pytest بالتكامل المستمر مع التقارير والمخرجات وفحوص الحالة الإلزامية

الوحدة 6: الاختبارات المتذبذبة والشيفرة القديمة وممارسة الفريق

تشخيص التذبذب: ترتيب الاختبارات والحالة المشتركة والوقت والتزامن

قواعد الحجر وسياسة إعادة المحاولة والحالات التي يكون فيها حذف الاختبار هو الصواب

إضافة اختبارات توصيفية حول الشيفرة القديمة قبل تعديلها

الاتفاق على معيار اختبار للفريق وتعريف مكتوب للإنجاز

المواد المقدمة

  • دليل الدورة وأمثلة شيفرة موثّقة وملاحظات مرجعية
  • بيئة معملية عملية ومستودعات بداية جاهزة
  • تمارين وقوائم تحقق وقوالب شيفرة قابلة لإعادة الاستخدام
  • شهادة إتمام من 4D
  • دعم فني بعد انتهاء البرنامج

خيارات التدريب

يمكن تقديم البرامج داخل مقر المؤسسة، أو عن بُعد، أو بصيغة مدمجة بحسب جدول الفريق وموقعه وأهداف التعلم. عندما يتضمن البرنامج شهادة أو اختباراً من جهة خارجية، تبقى قواعد الشهادة ورسومها خاضعة لسياسات الجهة المانحة، بينما تقدم 4D التدريب ودعم التحضير.

لماذا البعد الرابع

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

دورات ذات صلة

تطوير البرمجيات

أساسيات البرمجة بلغة Python

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

View course
تطوير البرمجيات

Python المتوسط وممارسات الشيفرة النظيفة

برنامج موجّه للمطورين الذين تعمل شيفرة Python لديهم لكن يصعب تغييرها. يغطي dataclasses والمولّدات والمزخرفات ومديري السياق وتلميحات الأنواع، ثم يطبّق خطوات إعادة الهيكلة التي تحوّل وحدة من تسعمئة سطر إلى وحدات صغيرة مختبَرة تحرسها أدوات black وruff وmypy.

View course
تطوير البرمجيات

أتمتة المهام المكتبية والبرمجة النصية بلغة Python

برنامج موجّه للفرق التي تهدر ساعات أسبوعية في أعمال متكررة على الملفات والجداول والتقارير. يقوم المشاركون بأتمتة هذه المهام باستخدام Python: معالجة الملفات دفعياً وجداول Excel وCSV واستدعاء واجهات REST وتنبيهات البريد والمهام المجدولة التي تعمل دون إشراف وتبلّغ بوضوح عند الفشل.

View course

تواصل مع البعد الرابع

خطط لمسار التدريب أو الاستشارة المناسب لفريقك.

شاركنا بعض التفاصيل وسنوجه طلبك نحو التدريب المؤسسي أو الاستشارات أو التقييم أو حلول فينييكس أو برنامج مخصص.