A newer version of the Streamlit SDK is available:
1.44.1
اختبارات نظام تسعير المناقصات
يحتوي هذا المجلد على اختبارات وحدة واختبارات تكامل لنظام تسعير المناقصات.
هيكل المجلد
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
.