במהלך עבודה על פרויקט קוד פתוח ב-GitHub שנוצר כדי להדגים את העבודה של מסגרת Selenium WebDriver עם Java, ככל שהפרויקט גדל, נוצר הצורך ליצור מספר קבצי testng.xml לצורך הרצת בדיקות שונות.
קבצים מרובים אלו נוצרו כדי להפריד את הבדיקות ולמקם את כל הבדיקות הקשורות לאתר מסוים בתוך testng.xml יחיד (השתמשתי באתרים שונים להדגמה כדי להדגים פעולות שונות שניתן לאוטומט באמצעות Selenium WebDriver).
חשבתי לשפוך מעט אור על השימוש במספר קבצי testng.xml וכיצד להריץ בדיקות. מכיוון ש-Maven הוא כלי הבנייה שנעשה בו שימוש, יש צורך בקובץ testng.xml יחיד כדי להריץ את כל הבדיקות בפרויקט. בנוסף, ישנם מקרים שבהם היה צורך לנפות תקלות בבדיקות שנכשלו על ידי הרצת קובץ testng.xml יחיד.
בפרויקט זה יצרתי 9 קבצי testng.xml שונים שמכילים מספר בדיקות, ואני מריץ את כל הבדיקות ב-9 קבצי testng.xml אלו באמצעות קובץ testng.xml יחיד. כן, זה אפשרי!
אז הצטרפו למסע שלי שבו אדגים כיצד להריץ מספר קבצי testng.xml באמצעות קובץ testng.xml יחיד. בנוסף, אשפוך אור גם על הרצת קובץ testng.xml יחיד מתוך ה-9 הזמינים והרצתו משורת הפקודה באמצעות Maven.
הרצת מספר קבצי testng.xml באמצעות קובץ testng.xml יחיד.
בואו נדבר קודם על ביצוע כל הבחינות עם כל 9 הקבצים testng.xml השונים. הפתרון לכך הוא להשתמש בתגית <suite-files> </suitefiles>
בעירך הערך של הקובץ testng.xml שלך ולספק את הנתיב לקבץ testng.xml האחר בין התגיות האלה. הנה הקבצים הדוגמאות למה שאני מדברת עליו:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Selenium 4 POC Tests ">
<suite-files>
<suite-file path="testng-saucedemo.xml"/>
<suite-file path="testng-automationpractice.xml"/>
<suite-file path="testng-theinternet.xml"/>
<suite-file path="testng-juice-shop.xml"/>
<suite-file path="testng-lambdatestecommerce.xml"/>
<suite-file path="testng-seleniumgrid-theinternet.xml"/>
<suite-file path="testng-lambdatest-selenium-playground.xml"/>
<!-- <suite-file path="testng-seleniumgrid-juiceshop.xml"/>-->
</suite-files>
</suite>
ברגע שניציא את הקבצים האלה, הוא יבצע את ה testng.xml המותאמים בסדר העדכונים שבין תגיות <suite-files>
לפנים. כך ש “testng-saucedemo.xml”
ייבצע קודם, ואז, “testng-automationpractice.xml”
ייבצע, וכך הלאה.
כל הקבצים testng.xml המועדים בדוגמא העלו רבים בתוכם. כך שכל הבחינות בתוך ה testng.xml המותאמים ייבצעו ולאחר הסיום, הקבצים הבאים ייבצעו את הבחינות הבאות.
התוכניות testng-saucedemo.xml הבאות הם התוכן של:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Sauce Demo Website Tests" parallel="tests" thread-count="4" verbose="2">
<test name="selenium 4 Tests with Chrome Browser">
<parameter name="browser" value="chrome"/>
<classes>
<class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
<methods>
<include name="loginSauceDemoTest"/>
<include name="logOutSauceDemoTest"/>
</methods>
</class>
</classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Firefox Browser">
<parameter name="browser" value="firefox"/>
<classes>
<class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
<methods>
<include name="loginSauceDemoTest"/>
<include name="logOutSauceDemoTest"/>
</methods>
</class>
</classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Edge Browser" enabled="false">
<parameter name="browser" value="edge"/>
<classes>
<class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
<methods>
<include name="loginSauceDemoTest"/>
<include name="logOutSauceDemoTest"/>
</methods>
</class>
</classes>
</test> <!-- Test -->
<test name="selenium 4 Tests with Opera Browser" enabled="false">
<parameter name="browser" value="opera"/>
<classes>
<class name="io.github.mfaisalkhatri.tests.saucedemo.SauceDemoTests">
<methods>
<include name="loginSauceDemoTest"/>
<include name="logOutSauceDemoTest"/>
</methods>
</class>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
אחרי שכל הבחינות שבעדכונים בקבץ הXML הזה יובצעו (לא משנה אם הן מתובצעות בהצלחה או כשלון), והביצוע מסתיים, הקבצים הבאים ייבצעו את הבחינות הבאות.
testng אינו תומך בביצוע קבצי הסיום במקבילה.
ביצוע קבץ אחד של testng.xml בעזרת Maven
יש לך אפשרות בIDE להריץ את הבדיקות שלך בעזרת קובץ testng.xml על ידי לחיצה עליו בעיצוב מועדף ובחירת אפשרות להריץ את הבדיקות. עם זאת, כשמגיע לביצוע הבדיקות במעבר הבית-מחשב/מעבר מחשבים, האפשרות הזו אינה מתאימה טוב מפני שצריך לבצע את הבדיקות בעזרת הצוותים בשורות בערך בערך בשידור המובן המכונומטי.
הגדרת הפרוייקט שלך על מנת להריץ קובץ suite-xml באמצעות שורה הפקת פקינס
עלינו להגדיר את ההגדרות הבאות כדי להיות מסוגלים להריץ את קובץ testng.xml בעזרת Maven.
עידכן את תוסף Maven Surefire בקובץ ה pom.xml שלך:
שימו לב לתגית <SuiteXmlFile>
בתמונה העליונה. הערך לשם התגית suiteXmlFile
מוגדר כ ${suite-xml}
. אנחנו נגדל את הערך המקובל להצעת ההצגה באיזור התכונות בקובץ pom.xml באופן הבא:
המסלול הברת המצב ל testng.xml מוגדר עבור הקובץ שהשתמשנו בחלק הבלוג הזה והעדכנו את המסלול לקובץ suite-files
בתוכו.
אז, עכשיו אם אנחנו מריצים את הפקודה mvn clean install
או mvn clean test
, Maven יאלץ את קובץ הבדיקות הברת המצב המובן מהמסלול המעדכן באיזור התכונות ויבצע את כל הבדיקות.
עכשיו, השאלה שמגיעה לתודעה היא: "מה שאני צריך לעשות אם אני רוצה לבצע כל עוד testng.xml קובץ אחר, האם זה אפשרי?"
התשובה היא "כן": אנחנו יכולים להריץ כל testng.xml קובץ בפרוייקט שלנו על-ידי הוספת -Dsuite-xml=<נתיב קובץ הtestng.xml>
בפקודה של mvn
שלנו.
שימו לב, קיימנו קודם את ההגדרה הזו באחסון הפלוגים של ה Maven Surefire בpom.xml.
אנחנו רק צריכים לעבור את הערכים עבור המאפיין suite-xml
בשורה הפקודה, שנעשה בעזרת האפשרות -D
בפקודה mvn
:
mvn clean test -Dsuite-xml=<testng.xml file path>
בואו ננסה את השורה הפקודה ונריץ קבצים testng.xml שונים בעזרת Maven מהשורה הפקודה, כפי שלמדנו.
אנחנו נריץ את הקובץ testng-internet.xml
, נבדוק שהוא יחסיך את הקובץ הבר-מקור הקבוע testng.xml, ויריץ רק את האחד שאנחנו מעבירים בפקודה. עלינו לעבור את הנתיב המלא בו נשמר את testng.xml, ובמקרה שלנו, הוא זמין בתיקייה test-suite
, אז הנתיב המלא הוא test-suites\testng-theinternet.xml
. הפקודה שאנחנו נריץ היא הבאה (והבה לא לשכוח להיות בתוך תיקיית הפרוייקט הבסיסי בחלון הפקודות שלך לפני שיריצות הפקודה של Maven):
mvn clean test -Dsuite-xml=test-suite\testng-theinternet.xml

"-Dsuite-xml
הבדיקות ניצנו בהצלחה והתוצאות הודפסו על הקונסול. זה אומר שבדיקות 32 נעשו ועברו בהצלחה.
כדי לאשר שהקבצים XML הנכונים נבחרו והבדיקות ניצאו, בואו נבצע את הבדיקות עבור קובץ testng-theinternet.xml
באמצעות מערכת מחשב ולבדוק את מספר הבדיקות שניצאו.
אנחנו יכולים לראות ש32 בדיקות ניצאו ועברו בהצלחה, שמאשר שהבדיקות שאנחנו בצענו בעזרת הפקודה mvn
ניצאו בצורה נכונה עבור קובץ testng.xml שהזרקנו.
הסיכוי
אנחנו יכולים לקבל קבצים testng.xml רבים כדי למחולל בתוך הפרוייקט שלנו את הבדיקות לפי מודלים שונים/אתרים, והקבצים הרבים האלה testng.xml יכולים להיות ניצאות בעזרת קבץ אחד testng.xml.
באותו אופן, אנחנו יכולים לבצע קבץ testng.xml מהמסלול בעזרת תוסף פאבן של מאבן.
Source:
https://dzone.com/articles/working-with-multiple-testngxml-files