المجموعات في TestNG
⚡ ملخص ذكي
المجموعات في TestNG تتيح لك هذه الطريقة تصنيف أساليب الاختبار باستخدام تسميات منطقية، ثم تضمينها أو استبعادها من خلال مجموعة XML. يبسط هذا الأسلوب عمليات اختبار التحقق الأولي، واختبار الانحدار، واختبار الاعتمادية دون الحاجة إلى إعادة كتابة التعليمات البرمجية. Java رمز.

TestNG هو إطار عمل للاختبار يغطي اختبارات الوحدة، والاختبارات الوظيفية، والاختبارات الشاملة، واختبارات واجهة المستخدم، واختبارات التكامل لـ Java المشاريع.
يمكنك تشغيل حزمة واحدة أو العديد من الحزم (تحتوي الحزمة على فئات ذات صلة في تخطيط دليل محدد) عن طريق إنشاء مجموعة XML وتشغيلها من خلال Maven.
TestNG المجموعات مع المثال
يمكنك استخدام المجموعات في TestNG متى:
- لا ترغب في توزيع أساليب الاختبار على العديد من الفئات بناءً على المجال الوظيفي فقط، و
- تريد تخطي (عدم تنفيذ) حالات الاختبار المحددة كما لو كانت غائبة عن قاعدة التعليمات البرمجية.
- لتحقيق كلا الهدفين، تقوم بتصنيف الطرق إلى مجموعات منطقية. TestNG ثم يحترم عوامل التصفية "include" و "exclude" المعلنة في مجموعة XML.
يوضح المقتطف أدناه صيغة وضع العلامات على المجموعات المستخدمة في طريقة الاختبار.
يُستخدم هنا اسمان للمجموعات، وهما: bonding و strong_tiesهذه تسميات منطقية يمكنك إعادة تسميتها لتناسب مشروعك.
استخدم <groups> يشير الوسم إلى بداية عوامل تصفية المجموعة داخل مجموعة XML.
بعد ذلك، تقوم بتخصيص ملف XML لاختيار مجموعة محددة من الفئات الموسومة. يوضح المثال أدناه صيغة تعريف المجموعة.
<يجري>
<تتضمن الاسم="الترابط" />
</يجري>
</ مجموعات>
لنفترض أن فئة واحدة تحتوي على 10 طرق اختبار.
من بين تلك الطرق:
- أربع طرق لنقل
bondingالمجموعة، و - أربع طرق لنقل
strong_tiesالمجموعة.
بعد ذلك، تقوم بإعداد Maven و Java المسارات واستخدامها Eclipse بيئة تطوير متكاملة لعرض استخدام المجموعة من خلال ملفات XML داخل Javaمشروع Maven قائم على -
إنشاء ملف XML لـ TestNG مع علامات
- يخزن ملف XML (لغة الترميز القابلة للتوسيع) في إطار عمل Maven إعدادات اختبار واحد أو أكثر، والتي تم تعريفها داخل العلامة.
- يتم تغليف كل إدخال اختبار في بطاقة ويمكنها أن تحمل واحدة أو أكثر TestNG الطبقات.
- A Java فصل دراسي مع واحد أو أكثر @اختبار تُعامل التعليقات التوضيحية على أساليبها على أنها TestNG فئة.
تظهر عدة علامات متسلسلة لإنشاء ملف testng.xml يعمل، وهي: ، ، و .
- استخدم يحتوي الوسم على اسم مستوى المجموعة المستخدم في TestNG تقارير لملخصات التنفيذ.
- استخدم <test name=”Guru 99 عرض توضيحي لاختبار الدخان يحتوي الوسم على اسم اختبار منطقي؛ ويستخدمه التقرير لحساب عدد مرات النجاح والفشل والتخطي بالإضافة إلى إجمالي وقت التنفيذ وبيانات تعريف المجموعة.
- استخدم يشير الوسم إلى فئة الاختبار، حيث
com.group.guru99هي الحزمة وTC_Class1هو اسم الفئة.
<!DOCTYPE جناح نظام "http://testng.org/testng-1.0.dtd">
<جناح الاسم="جناح">
<تجربه بالعربي الاسم="Guru 99 عرض توضيحي لاختبار الدخان">
< مجموعات>
<يجري>
<تتضمن الاسم="روابط قوية" />
</يجري>
</ مجموعات>
<فصول>
<فئة الاسم="com.group.guru99.TC_Class1" />
</فصول>
</تجربه بالعربي>
</جناح>
تمت الإشارة إلى تكوين XML هذا في مقاطع الفيديو التوضيحية في الأقسام التالية.
"استبعاد" أو "تضمين" في اختبار XML
إذا كانت آلية المجموعة تبدو ثقيلة بالنسبة لفلتر صغير، فإن مجموعة testng.xml تسمح لك أيضًا باستبعاد أو تضمين طرق الاختبار الفردية بالاسم.
تضمين الوسم: صيغة علامة التضمينتتضمن الاسم="${TEST_CASE_NAME}" />
ملاحظة: يمكنك تضمين أو استبعاد العديد من حالات الاختبار في عملية تشغيل واحدة، وينطبق نفس التركيب على عوامل تصفية المجموعات.
استخدام مجموعات التبعية للتنفيذ المرتب
بعيدًا عن مجرد الإدماج، TestNG يسمح لمجموعة بالاعتماد على مجموعة أخرى باستخدام dependsOnGroups السمة. يضمن المُشغِّل انتهاء كل طريقة في المجموعة الأصلية قبل بدء أي طريقة تابعة، مما يحافظ على موثوقية الشروط المسبقة.
- قم بتسجيل الدخول أولاً، ثم قم بإجراء المعاملات: طرق تسجيل الدخول باستخدام الوسوم
group = "auth"واختبارات نقل العلامات معdependsOnGroups = {"auth"}لا تُجرى اختبارات النقل إلا بعد نجاح تسجيل الدخول. - تجاوز الفشل: إذا فشلت إحدى الطرق في المجموعة الأصلية، TestNG يقوم هذا النظام بتحديد الطرق التابعة على أنها تم تخطيها بدلاً من فشلها بشكل مباشر، مما يحافظ على مصداقية التقارير.
- قم بالدمج مع alwaysRun: ينبغي أن تقوم طرق التنظيف بضبط
alwaysRun = trueلذا يستمر تشغيل عملية التفكيك حتى عند فشل مجموعة المصدر.
يُعد هذا النمط شائعًا في مجموعات البرامج المتكاملة حيث يجب إكمال إعداد واجهة برمجة التطبيقات قبل بدء عمليات تأكيد واجهة المستخدم.
يجري TestNG تجميع، تضمين، استبعاد التعليمات البرمجية (عرض فيديو توضيحي)
فيما يلي شرح تفصيلي لـ Java الكود ومجموعة XML التي تُشغّل التجميع، والاستبعاد، والإدراج السلوك.
سيناريو الاختبار: Запустить Guruقم بزيارة موقع الخدمات المصرفية التجريبي رقم 99، وتحقق من بعض العناصر في صفحة تسجيل الدخول، وأدخل بيانات الاعتماد، ثم أعد التحقق من بعض العناصر في لوحة التحكم بعد تسجيل الدخول.
ملاحظة: كل خطوة موجودة في طريقتها الخاصة، ولكن في وقت التشغيل يعتمد الترتيب على المدخلات الموجودة في مجموعة XML.
- طريقة 1: قم بتهيئة المتصفح وتشغيله URL (
tc01LaunchURL()). - طريقة 2: تحقق من عنوان صفحة تسجيل الدخول (
tc02VerifyLaunchPage()). - طريقة 3: أدخل اسم المستخدم وكلمة المرور في نموذج تسجيل الدخول (
tc03EnterCredentials()). - طريقة 4: تحقق من وجود معرّف المدير في لوحة تحكم المستخدم (
tc04VerifyLoggedInPage()). - طريقة 5: تحقق من الروابط الإضافية في لوحة تحكم المستخدم (
tc05VerifyHyperlinks()).
Code بالنسبة للسيناريو:
استيراد java.util.concurrent.TimeUnit ؛
استيراد org.openqa.selenium.By ؛
استيراد org.openqa.selenium.WebDriver ؛
استيراد org.openqa.selenium.firefox.Firefoxالسائقين؛
استيراد org.testng.Assert;
استيراد org.testng.annotations.Test؛
الطبقة العامة TC_Class1 {
نهائي ثابت للجمهور ويب درايفر برنامج تشغيل الويب = جديد Firefoxسائق()؛
خيط launchPageHeading = "//h3[text()=."Guru99 بنك";
نهائي خيط userName_element = "//input[@name='uid']"، عنصر_كلمة_المرور = "//input[@name='password']",
signIn_element = "//input[@name='btnLogin']";
نهائي خيط قيمة اسم المستخدم = "mngr28642"، قيمة_كلمة_المرور = "ydAnate";
نهائي خيط managerID = "//td[contains(text(),'Manger Id')]";
نهائي خيط العميل الجديد = "//a[@href='addcustomerpage.php']"، تحويل الأموال = "//a[@href='FundTransInput.php']";
/** تقوم حالة الاختبار هذه بتهيئة برنامج تشغيل الويب */
@اختبار( مجموعات = { "الترابط", "روابط قوية" })
الفراغ العام إطلاق tc01URL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20، TimeUnit.SECONDS);
webDriver.get("https://www.demo.guru99.com/V4/");
}
/** يتحقق من وجود العنوان في صفحة تسجيل الدخول */
@اختبار( مجموعات = { "الترابط" })
الفراغ العام tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
"عنوان الصفحة الرئيسية غير معروض");
System.out.println ("يتم عرض عنوان الصفحة الرئيسية");
}
/** يُدخل اسم المستخدم وكلمة المرور، ثم ينقر على تسجيل الدخول */
@اختبار( مجموعات = { "الترابط", "روابط قوية" })
الفراغ العام tc03EnterCredentials() {
webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);
webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);
webDriver.findElement(By.xpath(signIn_element)).click();
}
/** يتحقق من هوية المدير في لوحة التحكم */
@اختبار( مجموعات = { "روابط قوية" })
الفراغ العام tc04VerifyLoggedInPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
"لا تظهر بطاقة هوية المدير");
System.out.println ("تم عرض ملصق هوية المدير");
}
/** يتحقق من رابط العميل الجديد ورابط تحويل الأموال في لوحة التحكم */
@اختبار( مجموعات = { "الترابط" })
الفراغ العام tc05VerifyHyperlinks() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
"لم يتم عرض رابط العميل الجديد");
System.out.println ("يتم عرض رابط العميل الجديد");
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
"لا يظهر رابط تحويل الأموال");
System.out.println ("يظهر رابط تحويل الأموال");
}
}
يرجى الملاحظة: تظل بيانات اعتماد الخدمات المصرفية التجريبية صالحة لمدة 20 يومًا تقريبًا، لذا قد يظهر خطأ في بيانات الاعتماد غير الصالحة عند التشغيل المحلي بعد انتهاء تلك الفترة.
شرح الكود:
خمس طرق اختبار، واحدة لكل إجراء، كل منها يحمل groups السمة على @Test حاشية. ملاحظة.
التصنيفان المنطقيان للمجموعات هما strong_ties و bonding.
- الطريقتان الأولى والثالثة تحملان كليهما
bondingوstrong_tiesلذا يتم تشغيلها كلما تم تضمين أي من المجموعتين في الحزمة. هذا نمط شائع للمشتركين حالة اختبار خطوات. - الطريقة الثانية تحمل علامة فقط
bondingلذا فهو يعمل فقط عندماbondingالمجموعة مشمولة. - الطريقة الرابعة مُصنّفة فقط بـ
strong_tiesلذلك، لا يتم تشغيله إلا عند تضمين تلك المجموعة. - الطريقة الخامسة تحمل علامة فقط
bondingلذا فهو يعمل فقط عندماbondingالمجموعة مشمولة.
فيما يلي أربعة سيناريوهات للتنفيذ:
السيناريو شنومكس: قم بتشغيل جميع طرق الاختبار بغض النظر عن المجموعة. قم بإزالة <groups> كتلة من ملف XML قيد التشغيل.
السيناريو شنومكس: قم بتشغيل الطرق المرتبطة بمجموعة مختارة فقط، وهي: strong_ties or bondingيرجى الاطلاع على الفيديو أدناه.
- في الجزء الأول من الفيديو،
<groups>تم التعليق على الكتلة، لذلك يتم تشغيل كل طريقة اختبار. - في الجزء الثاني، يتم استعادة عامل تصفية المجموعة، ويتم تشغيل طرق المطابقة فقط.
السيناريو شنومكس: قم بتطبيق فلتر الاستبعاد لتجاوز حالات الاختبار المحددة. يرجى مراجعة الفيديو.
- لا يشمل العرض التجريبي
tc02بالاسم في ملف XML قيد التشغيل، ويؤكد تقرير النتائج أن الطريقة المستبعدة لا تعمل.
السيناريو شنومكس: قم بتطبيق عامل التصفية المضمن لتشغيل البرنامج فقط tc01LaunchURL, tc03EnterCredentialsو tc05VerifyHyperlinksيرجى الرجوع إلى الفيديو.
في هذه العملية، يتم تنفيذ الطرق المدرجة في عامل التصفية فقط، تمامًا كما تم تكوينها.
قم بتنزيل نموذج المشروع من الرابط أدناه.
خاتمة
المجموعات في TestNG إضفاء هيكلية على نطاق واسع Selenium ومجموعات الوحدات عن طريق استبدال تقسيمات الفئات لمرة واحدة بمرشحات XML التصريحية.
قم بتمييز طرقك بـ @Test(groups = {...})، ثم استخدام <include>, <exclude>و dependsOnGroups لتشغيل اختبارات الدخان، واختبارات التراجع، والاختبارات الشاملة من نفس مشروع Maven على TestNG 7.x.

