File size: 3,935 Bytes
82676b8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# اختبارات نظام تسعير المناقصات
يحتوي هذا المجلد على اختبارات وحدة واختبارات تكامل لنظام تسعير المناقصات.
## هيكل المجلد
- `unit/`: اختبارات الوحدة للمكونات الفردية
- `integration/`: اختبارات التكامل بين مكونات النظام المختلفة
## تشغيل الاختبارات
### تشغيل جميع الاختبارات
لتشغيل جميع الاختبارات، قم بتنفيذ الأمر التالي من المجلد الرئيسي للمشروع:
```bash
python -m unittest discover -s tests
```
### تشغيل اختبارات الوحدة فقط
```bash
python -m unittest discover -s tests/unit
```
### تشغيل اختبارات التكامل فقط
```bash
python -m unittest discover -s tests/integration
```
### تشغيل ملف اختبار محدد
```bash
python -m unittest tests/unit/test_reports.py
```
## كتابة اختبارات جديدة
### اختبارات الوحدة
اختبارات الوحدة تركز على اختبار مكون واحد معزول عن باقي النظام. يجب اتباع النمط التالي:
```python
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)
```
### اختبارات التكامل
اختبارات التكامل تركز على التفاعل بين مكونين أو أكثر. يجب اتباع النمط التالي:
```python
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` لهذا الغرض:
```python
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`:
```bash
# تثبيت أداة coverage
pip install coverage
# تشغيل الاختبارات مع قياس التغطية
coverage run -m unittest discover -s tests
# عرض تقرير التغطية
coverage report
# إنشاء تقرير HTML للتغطية
coverage html
```
ملف تقرير HTML سيكون في مجلد `htmlcov/index.html`. |