v3 / tests /README.md
EGYADMIN's picture
Upload 115 files
82676b8 verified

A newer version of the Streamlit SDK is available: 1.44.1

Upgrade

اختبارات نظام تسعير المناقصات

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

هيكل المجلد

  • unit/: اختبارات الوحدة للمكونات الفردية
  • integration/: اختبارات التكامل بين مكونات النظام المختلفة

تشغيل الاختبارات

تشغيل جميع الاختبارات

لتشغيل جميع الاختبارات، قم بتنفيذ الأمر التالي من المجلد الرئيسي للمشروع:

python -m unittest discover -s tests

تشغيل اختبارات الوحدة فقط

python -m unittest discover -s tests/unit

تشغيل اختبارات التكامل فقط

python -m unittest discover -s tests/integration

تشغيل ملف اختبار محدد

python -m unittest tests/unit/test_reports.py

كتابة اختبارات جديدة

اختبارات الوحدة

اختبارات الوحدة تركز على اختبار مكون واحد معزول عن باقي النظام. يجب اتباع النمط التالي:

import unittest

class TestComponentName(unittest.TestCase):
    
    def setUp(self):
        # إعداد بيئة الاختبار
        pass
    
    def tearDown(self):
        # تنظيف بيئة الاختبار
        pass
    
    def test_functionality_name(self):
        # اختبار وظيفة معينة
        result = function_to_test(params)
        self.assertEqual(result, expected_value)

اختبارات التكامل

اختبارات التكامل تركز على التفاعل بين مكونين أو أكثر. يجب اتباع النمط التالي:

import unittest

class TestIntegrationName(unittest.TestCase):
    
    def setUp(self):
        # إعداد بيئة الاختبار
        # إنشاء المكونات المختلفة المطلوبة
        pass
    
    def tearDown(self):
        # تنظيف بيئة الاختبار
        pass
    
    def test_integration_scenario(self):
        # اختبار سيناريو تكامل محدد
        result = component1.action(params)
        component2.process(result)
        final_result = component2.get_result()
        self.assertEqual(final_result, expected_value)

المحاكاة والاستبدال

في بعض الحالات، قد نحتاج إلى محاكاة بعض المكونات لعزل المكون الذي نختبره. يمكن استخدام مكتبة unittest.mock لهذا الغرض:

from unittest.mock import Mock, patch

class TestWithMocking(unittest.TestCase):
    
    @patch('module.ClassName')
    def test_with_mock(self, MockClass):
        # إعداد المحاكاة
        instance = MockClass.return_value
        instance.method.return_value = 'mocked_result'
        
        # استدعاء الدالة التي تستخدم الكائن المحاكى
        result = function_to_test()
        
        # التحقق من النتائج ومن استدعاء المحاكاة
        self.assertEqual(result, expected_value)
        instance.method.assert_called_once_with(expected_params)

التغطية

يمكن قياس تغطية الاختبارات باستخدام أداة coverage:

# تثبيت أداة coverage
pip install coverage

# تشغيل الاختبارات مع قياس التغطية
coverage run -m unittest discover -s tests

# عرض تقرير التغطية
coverage report

# إنشاء تقرير HTML للتغطية
coverage html

ملف تقرير HTML سيكون في مجلد htmlcov/index.html.