TestNG إنشاء التقارير في Selenium: كيفية توليد؟
⚡ ملخص ذكي
TestNG التقارير هي ملفات نتائج HTML الافتراضية التي TestNG يكتب في مجلد مخرجات الاختبار بعد كل تشغيل، موضحًا حالات الاختبار التي نجحت أو فشلت أو تم تخطيها، بالإضافة إلى أي سجلات للمُبلغ.
ما هي TestNG التقارير؟
TestNG التقارير هي تقارير HTML الافتراضية التي يتم إنشاؤها بمجرد تنفيذ حالات الاختبار باستخدام TestNG. تساعدك هذه التقارير على تحديد المعلومات حول حالات الاختبار وحالة المشروع. TestNG تقارير في Selenium سجل ثلاث نتائج لكل طريقة اختبار - النجاح والفشل والتخطي - حتى تتمكن من التحقق من البيانات المتعلقة بحالات الاختبار بنظرة سريعة.
يعد إنشاء التقرير أمرًا مهمًا للغاية عند إجراء اختبار الأتمتة وكذلك الاختبار اليدوي.
- من خلال النظر إلى النتيجة، يمكنك بسهولة التعرف على عدد حالات الاختبار التي تم اجتيازها أو فشلها أو تخطيها.
- ومن خلال الاطلاع على التقرير، ستتعرف على حالة المشروع.
Selenium يُستخدم WebDriver لأتمتة تطبيق الويب، ولكنه لا يقوم بإنشاء أي تقارير من تلقاء نفسه.
- استخدم TestNG سيتم إنشاء التقرير الافتراضي.
- عند تنفيذ ملف testng.xml وتحديث المشروع، ستحصل على مجلد test-output، ويحتوي هذا المجلد على مخرجات التقارير من TestNG.
- انقر بزر الماوس الأيمن على ملف emailable-report.html وحدد خيار "فتح باستخدام متصفح الويب".
ملاحظة: لم يتغير السلوك الموصوف هنا في TestNG 7.x. إصدارات من TestNG تتطلب الإصدارات 7.6 وما بعدها JDK 11 أو أعلى، لذلك قد يحتاج مشروع أقدم إلى رفع مستوى JDK الخاص به قبل إنتاج التقارير.
انواع من TestNG التقارير في مجلد مخرجات الاختبار
قبل فتح أي ملف، من المفيد معرفة ما يحتويه مجلد مخرجات الاختبار فعليًا. TestNG يكتب عدة ملفات في كل تشغيل، وكل منها يجيب على سؤال مختلف.
| ملف أو مجلد | ما يحتويه | عندما يكون ذلك مفيداً |
| index.html و | تقرير الهبوط الذي يربط بالنتائج والمجموعات والأوقات وعروض مخرجات المُعدّ. | تحليل إحدى الجولات بالتفصيل. |
| emailable-report.html | صفحة واحدة مكتفية ذاتيًا تلخص الطرق التي نجحت، والتي فشلت، والتي تم تخطيها لكل فئة. | مشاركة النتائج مع الأشخاص الذين لا يفتحون المشروع. |
| testng-results.xml | ملف XML قابل للقراءة آلياً، مكتوب بواسطة برنامج XML Reporter المدمج، مع حالة كل طريقة ومدتها. | تغذية لوحة تحكم أو محلل بيانات مخصص. |
| تقارير الوحدة | JUnitملفات بتنسيق XML، ملف واحد لكل فئة اختبار. | أي إضافة CI تقرأ JUnit تنسيق النتيجة. |
| testng-failed.xml | ملف مجموعة تم إنشاؤه يسرد فقط الطرق التي فشلت. | إعادة تشغيل حالات الفشل فقط بدلاً من المجموعة الكاملة. |
الملفان HTML هما الملفان اللذان سيفتحهما هذا البرنامج التعليمي لاحقًا، لذا فإن الشرح أدناه يبدأ بملف emailable-report.html.
كيفية إنشاء التقارير في Selenium
الطريقة 1: emailable-report.html
- انقر على الخيار "emailable-report.html"
- انقر على خيار متصفح الويب
تُظهر لقطة الشاشة أدناه فتح ملف emailable-report.html من مجلد test-output.
تقارير الإخراج في TestNG سيبدو إعداد التقارير كما يلي إذا تم اجتياز كلا الفصلين:
فكر في السيناريو الذي تفشل فيه عمدًا في حالة الاختبار، أي فئة DemoB. ثم قم بتحويل كلتا الفئتين إلى ملف مجموعة testng.xml وقم بتشغيله. ثم ستبدو النتيجة على هذا النحو. ستظهر حالات الاختبار الفاشلة.
هذه نتيجة لفئة DemoB:
وبالمثل، فإن نتيجة Class DemoA ستبدو كما يلي:
الطريقة الثانية: Index.html
- انقر بزر الماوس الأيمن على ملف Index.html من دليل المشروع.
- حدد خيار فتح باستخدام متصفح الويب. سيتم عرض النتيجة بالترتيب التالي.
تُظهر لقطة الشاشة أدناه فتح ملف index.html من دليل المشروع.
النتيجة ستبدو هكذا:
الطريقة الثالثة: فئة المراسلين
جنبا إلى جنب مع هؤلاء TestNG الطرق التي تم إنشاؤها للتقرير، يمكنك استخدام ملف object.properties لتخزين السجلات التي أنشأها النظام بالإضافة إلى السجلات التي أنشأها المستخدم. ولكن إحدى أبسط الطرق لتخزين معلومات السجل في الاختبار هي استخدام فئة المراسل.
مراسل.تسجيل الدخول Selenium هو فئة موجودة في TestNG لـ Selenium إعداد التقارير. يوفر 4 طرق مختلفة لتخزين معلومات السجل وهي:
- Reporter.log(String s);
- Reporter.log(String s, Boolean logToStandardOut);
- Reporter.log(String s, int Level);
- Reporter.log(String s, int Level, Boolean logToStandardOut);
تحدد الوسيطة الثانية ما إذا كانت الرسالة ستُعرض على وحدة التحكم بالإضافة إلى التقرير، وتتحكم وسيطة المستوى في مستوى الإسهاب الذي يتم الاحتفاظ بالرسالة عنده.
مثال:
قم بإنشاء فئتين مثل DemoA و DemoB واكتب الكود التالي داخل الفئات.
لفئة العرض التوضيحي؛
- استخدم Code تم شرح DemoA أعلاه. أنت تستخدم هنا طريقة السجل لفئة المراسل. (لتنفيذ فئة تقارير خاصة بك، يجب أن تنفذ الفئة واجهة org.testng.IReporter.)
- طريقة السجل هي طريقة ثابتة لفئة المراسل. إذن أنت تصل إلى هذه الطريقة من خلال فئة Reporter.
- يتم استخدام طريقة السجل لتخزين معلومات السجل المكتوبة داخل البرنامج. من خلال النظر إلى معلومات السجل، ستتعرف بسهولة على المكان الذي توقف فيه تنفيذ البرنامج بالضبط.
تُظهر لقطة الشاشة أدناه استدعاءات Reporter.log الموضوعة داخل فئة DemoA.
بالنسبة للفئة DemoB:
- الآن، قم بإنشاء ملف testng.xml عن طريق تحديد هاتين الفئتين و
- حدد تشغيل كـ و
- انقر فوق التحويل إلى اختبار.
- ثم قم بتشغيل ملف testng.xml هذا عن طريق تحديد تشغيل باسم وتحديد مجموعة testng.
- ثم قم بتحديث المشروع وافتح مجلد إخراج الاختبار.
- في مجلد test-output، افتح ملف emailable-report.html. سيبدو كما يلي:
وبالمثل، سيكون لديك مخرجات لمشروع العرض التوضيحي B أيضًا.
- في مجلد مخرجات الاختبار، افتح ملف index.html. سيبدو كالتالي:
انقر على إخراج المراسل. سيتم فتح معلومات التسجيل مهما كانت مكتوبة في طرق الاختبار.
انقر على الأوقات. سيوضح مقدار الوقت المستغرق لتشغيل طريقة الاختبار الموجودة في الفصل باستخدام TestNG أدوات إعداد التقارير.
كيفية التخصيص TestNG التقارير باستخدام ITestListener و IReporter
تستخدم الطرق الثلاث المذكورة أعلاه أي شيء TestNG يتم ذلك افتراضيًا. عندما يحتاج الفريق إلى تصميم مختلف، أو حقول إضافية، أو عرض مباشر للتقدم، TestNG يعرض نقطتي توسيع بدلاً من مطالبتك بتصحيح التقرير الافتراضي.
- ITestListener يتم إخطارك في الوقت الفعلي عند بدء كل اختبار أو نجاحه أو فشله أو تخطيه. استخدم هذه الميزة عندما تحتاج إلى التقاط المعلومات في لحظة وقوع الحدث - كلقطة شاشة عند الفشل، على سبيل المثال.
- ايريبورتير يتم إخطار النظام مرة واحدة بعد انتهاء كل مجموعة عمليات، ويتلقى كائنات تصف العملية بأكملها. استخدمه عندما يكون الناتج مستندًا نهائيًا، مثل ملف PDF أو صفحة HTML مخصصة.
يبدو المستمع الذي يدفع كل نتيجة إلى التقرير من خلال فئة Reporter على النحو التالي.
import org.testng.ITestListener; import org.testng.ITestResult; import org.testng.Reporter; public class ReportListener implements ITestListener { @Override public void onTestSuccess(ITestResult result) { Reporter.log("PASSED: " + result.getName(), true); } @Override public void onTestFailure(ITestResult result) { Reporter.log("FAILED: " + result.getName(), true); } @Override public void onTestSkipped(ITestResult result) { Reporter.log("SKIPPED: " + result.getName(), true); } }
يتم تسجيل المستمع في نفس ملف مجموعة اختبار testng.xml الذي أنشأته بالفعل لـ DemoA و DemoB.
<suite name="Demo Suite"> <listeners> <listener class-name="ReportListener" /> </listeners> <test name="Demo Test"> <classes> <class name="DemoA" /> <class name="DemoB" /> </classes> </test> </suite>
هناك خياران من خيارات سطر الأوامر يجدر معرفتهما أثناء التجربة. -d يُغيّر هذا الخيار الدليل الذي تُكتب فيه التقارير، و -usedefaultlisteners false يُعطّل هذا الأمر المُبلّغات المُدمجة بحيث لا يعمل سوى المُستمع الخاص بك. كلاهما موصوف في النسخة الرسمية. TestNG تسجيل البيانات وتوثيق النتائج، والذي يوثق أيضًا الخصائص التي يقبلها برنامج الإبلاغ عن XML المدمج.
يتم تسجيل المستمع مرة واحدة ثم يتم تطبيقه على كل فئة في المجموعة، وهذا هو السبب في أن الفرق التي تعمل على نطاق واسع اختبار الأتمتة عادةً ما تفضل مجموعات الاختبار ذلك على إضافة أسطر السجل إلى كل طريقة اختبار يدويًا.
TestNG التقارير الافتراضية مقابل ExtentReports مقابل Allure
تكفي التقارير الافتراضية لمجموعة برامج صغيرة، لكنها لا تتضمن سجلات تاريخية ولا رسومًا بيانية. عادةً ما يتم إضافة مكتبتين مفتوحتي المصدر عند توسع مجموعة البرامج، وكلاهما يعمل مع TestNG.
| القدرات | TestNG الافتراضي | تقارير إكستنت | تقرير جاذبية |
| جهد الإعداد | لا شيء — تم إنتاجه تلقائيًا | أضف المكتبة واكتب كود المُبلِّغ | أضف المحول، ثم أنشئ التقرير من النتائج |
| المخططات ولوحات المعلومات | لا | نعم | نعم |
| صور | فقط من خلال ترميز ملف Reporter.log | واجهة برمجة تطبيقات المرفقات المدمجة | واجهة برمجة تطبيقات المرفقات المدمجة |
| سجل الجري والاتجاهات | لا | من خلال مكون الخادم الاختياري | نعم، من النتائج السابقة المخزنة |
| تغطية الإطار | TestNG فقط | Java و .NET | حيادية الإطار |
ابدأ بالتقارير الافتراضية بينما لا تزال المجموعة صغيرة. انتقل إلى تقارير إكستنت عندما يطلب أصحاب المصلحة لوحات معلومات سهلة القراءة، و تقرير جاذبية عندما يصبح سجل الاختبارات غير المستقرة عبر عمليات البناء هو السؤال المهم. أياً كان الخيار الذي تختاره، عادةً ما يتم نشر التقرير بواسطة مهمة البناء، وهو ما تم تغطيته في Jenkins التكامل المستمر البرنامج التعليمي.












