الاختبار
تحقق من الاستجابات بتأكيدات بلا شيفرة، وانسخ القيم بين الطلبات بالمستخرجات، واكتب السكربتات، وشغّل المجموعات كاملة.
شاهد هذا في الشرح: العمل اليومي مع واجهات 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 يلقي خطأ. اربط الطلبات عبر المتغيرات بدلا من ذلك: يضبط سكربت ما بعد الاستجابة لطلب تسجيل الدخول متغير بيئة، ويستخدمه الطلب التالي في عنوانه أو ترويساته. ويستطيع تدفق الرموز أن يفعل ذلك عنك. راجع المصادقة.
تشغيل مجموعة
- اختر
Run collectionمن قائمة المجموعة في الشريط الجانبي، أو اختر الهدف في المشغّل. - اختر
Run. استخدمCancel runلإيقاف تشغيل قيد التنفيذ. - اقرأ النتائج. يعرض كل طلب هل نجح، وأي التأكيدات فشلت.
بالنسبة إلى بيئة تطلب التأكيد، يتوقف Getman قبل طلب POST أو PUT أو PATCH أو DELETE، ويطلب منك التأكيد. يُضبط الإعداد لكل نوع بيئة، تحت Project settings ← Safety.
يشغّل سطر الأوامر المجموعات نفسها:
getman run "Shop API" --workspace getman --env Local
ينتهي التشغيل الناجح بالرمز 0، وينتهي الاختبار الفاشل بالرمز 1، وخطأ الطلب بالرمز 2. راجع التثبيت لإعداد سطر الأوامر.
الخطوات التالية
- يحوّل العقود المجموعات إلى مستند OpenAPI.
- تشرح استكشاف الأخطاء الأعطال الشائعة في الاختبارات.