الاختبار

تحقق من الاستجابات بتأكيدات بلا شيفرة، وانسخ القيم بين الطلبات بالمستخرجات، واكتب السكربتات، وشغّل المجموعات كاملة.

شاهد هذا في الشرح: العمل اليومي مع واجهات API (2:43)

يستطيع الطلب في Getman أن يتحقق من استجابته بنفسه. لكل طلب لسان Tests فيه تأكيدات لا تحتاج إلى شيفرة، ومستخرجات تنسخ قيمة من استجابة إلى متغير يستخدمه الطلب التالي. وللحالات الأكثر تعقيدا، يستطيع سكربت أن يضيف اختبارات باستخدام gm.test. تظهر كل عملية تحقق في لسان Tests في الاستجابة وفي مشغّل المجموعات.

التأكيدات بلا شيفرة

اختر Add assertion في لسان Tests. يختار كل صف نوعا من قائمة، ثم القيم التي يتحقق منها:

المجموعة النوع مثال
الاستجابة Status Status is 200
الاستجابة Response time أقل من 1000 ms
الاستجابة Body contains Body contains "ok" (حساس لحالة الأحرف)
الاستجابة JSON schema المحتوى يطابق JSON Schema مضمّنا
جسم JSON JSON path exists data.id موجود
جسم JSON JSON path value data.status يساوي active
جسم JSON JSON array length data.items يحتوي على عنصر واحد على الأقل
الترويسات Header Content-Type يحتوي على application/json

يستخدم فحص الحالة أربعة عوامل: is وis not وis in range (مثل 2xx) وis one of (مثل 200, 201). تستخدم مسارات JSON النقاط والفهارس، مثل data.tokens[0].access. تُقارَن القيم حسب نوعها: الرقم 7 يطابق "7" أو "7.0"، وتُقارَن النصوص تماما كما هي.

يمكن أن تحتوي القيم المتوقعة على متغيرات مثل {{expected_status}}. يعرض اسم الاختبار القالب لا القيمة المحلولة، فلا تظهر الأسرار في الأسماء.

قراءة الفشل

يعرض الفحص الفاشل القيمة المتوقعة والقيمة الفعلية. يفشل مسار JSON غير موجود مع الرسالة nothing at <path>، ويفشل كل فحص JSON إذا لم يكن المحتوى JSON. تُحجب القيم السرية من الرسالة.

أخطاء الحالة

تفشل استجابة 4xx أو 5xx الطلب ما لم يتوقع تأكيد حالة تلك الحالة. تعرض النتيجة Status is not an HTTP error مع تلميح بإضافة تأكيد حالة. أضف Status is 401 إلى طلب يتحقق من حالة عدم التفويض، فيجتاز الطلب.

المستخرجات

يقوم المستخرج بنسخ قيمة من استجابة إلى متغير. اختر Add extractor في لسان Tests، ثم اضبط:

  • Extract from: JSON path أو Header أو Cookie أو Status code
  • Store in variable: الاسم الذي يُكتب فيه
  • Scope: Runtime أو Environment أو Collection أو Global

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

تعمل المستخرجات قبل التأكيدات، فيُحفظ الرمز حتى إذا فشل فحص على الاستجابة نفسها.

السكربتات

تعمل السكربتات داخل بيئة معزولة (sandbox) بمهلة افتراضية 5 ثوان وحد ذاكرة 32 MB. يعمل سكربت ما قبل الإرسال قبل إرسال الطلب، ويعمل سكربت ما بعد الاستجابة بعد وصول الاستجابة. تستخدم الاختبارات داخل السكربت gm.test وسلسلة gm.expect:

gm.test("status is 200", () => {
  gm.expect(gm.response.code).to.equal(200);
});

gm.test("order has a total", () => {
  gm.expect(gm.response.json()).to.have.property("total");
});

يسجل كل gm.test(name, fn) نجاحا أو فشلا. يفشل الاختبار عند إلقاء خطأ أو رفض وعد. وأي تأكيد لا يُستدعى لا يفعل شيئا، لذلك استخدم الصيغة الكاملة دائما.

صيغ expect الشائعة هي equal وeql وinclude وproperty وlengthOf وmatch وabove وbelow، مع كلمات السلسلة to وbe وhave وnot. أي تأكيد آخر يلقي خطأ يذكر اسمه.

لا تستطيع الطلبات استدعاء بعضها من داخل السكربت، لأن gm.sendRequest يلقي خطأ. اربط الطلبات عبر المتغيرات بدلا من ذلك: يضبط سكربت ما بعد الاستجابة لطلب تسجيل الدخول متغير بيئة، ويستخدمه الطلب التالي في عنوانه أو ترويساته. ويستطيع تدفق الرموز أن يفعل ذلك عنك. راجع المصادقة.

تشغيل مجموعة

  1. اختر Run collection من قائمة المجموعة في الشريط الجانبي، أو اختر الهدف في المشغّل.
  2. اختر Run. استخدم Cancel run لإيقاف تشغيل قيد التنفيذ.
  3. اقرأ النتائج. يعرض كل طلب هل نجح، وأي التأكيدات فشلت.

بالنسبة إلى بيئة تطلب التأكيد، يتوقف Getman قبل طلب POST أو PUT أو PATCH أو DELETE، ويطلب منك التأكيد. يُضبط الإعداد لكل نوع بيئة، تحت Project settings ← Safety.

يشغّل سطر الأوامر المجموعات نفسها:

getman run "Shop API" --workspace getman --env Local

ينتهي التشغيل الناجح بالرمز 0، وينتهي الاختبار الفاشل بالرمز 1، وخطأ الطلب بالرمز 2. راجع التثبيت لإعداد سطر الأوامر.

الخطوات التالية