"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية الاستهزاء بطلبات واستجابات HTTP في سيناريوهات اختبار بايثون؟

كيفية الاستهزاء بطلبات واستجابات HTTP في سيناريوهات اختبار بايثون؟

تم النشر بتاريخ 2024-11-02
تصفح:955

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

الاستهزاء بالطلبات والردود على اختبار بايثون

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

فكر في ملف view.py بالكود التالي:

def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')
للسخرية من هذا السلوك، يمكنك استخدام حزمة Python وهمية. إليك كيفية تحقيق ذلك خطوة بخطوة:

الخطوة 1: تحديد السلوك الوهمي

للسخرية من وحدة الطلبات، حدد وظيفة ستحل محل request.get (). في هذه الوظيفة، يمكنك تحديد الاستجابة المطلوبة لكل عنوان URL.

def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)

الخطوة 2: تصحيح وحدة الطلبات

في حالة الاختبار الخاصة بك، استخدم مصمم mock.patch() لاستبدال الطلبات الفعلية وحدة مع وظيفتك الوهمية.

@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...

الخطوة 3: التحقق من التأكيدات

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

self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')
باتباع هذه الخطوات، يمكنك الاستهزاء بشكل فعال بطلبات HTTP والتحكم في الاستجابات في سيناريوهات اختبار Python الخاصة بك. يتيح لك ذلك عزل واختبار وظائف معينة مع ضمان عدم تداخل التبعيات الخارجية مع نتائجك.

بيان الافراج أعيد طبع هذه المقالة على: 1729424478 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3