ווים מלפפון

1. הקדמה

וו מלפפון יכול להיות שימושי כשאנחנו רוצים לבצע פעולות ספציפיות עבור כל תרחיש או צעד, אך מבלי שיהיו פעולות אלה במפורש בקוד הג'רקין.

במדריך זה, נסתכל על @לפני, @BeforeStep, @AfterStep, ו @לאחר ווים מלפפון.

2. סקירת הווים במלפפון

2.1. מתי צריך להשתמש בקרסים?

ניתן להשתמש ב- Hook לביצוע משימות רקע שאינן חלק מהפונקציונליות העסקית. משימות כאלה יכולות להיות:

  • הפעלת דפדפן
  • הגדרה או ניקוי קובצי Cookie
  • חיבור למסד נתונים
  • בודקים את מצב המערכת
  • ניטור

מקרה שימוש לניטור יהיה עדכון לוח מחוונים עם התקדמות הבדיקה בזמן אמת.

הוקס אינם נראים בקוד הגורקין. לָכֵן, אנחנו לא צריכים לראות אותם כתחליף לרקע מלפפון או לצעד נתון.

אנו נסתכל על דוגמה בה אנו משתמשים בקרסים לצילומי מסך במהלך ביצוע הבדיקה.

2.2. היקף הוקס

ווים משפיעים על כל תרחיש. לכן, נוהג טוב להגדיר את כל הווים בשיעור תצורה ייעודי.

אין צורך להגדיר את אותם הווים בכל מחלקת קוד דבק. אם נגדיר ווים באותה מחלקה עם קוד הדבק שלנו, יהיה לנו קוד פחות קריא.

3. ווים

בואו נסתכל תחילה על הווים האישיים. לאחר מכן נסתכל על דוגמא מלאה בה נראה כיצד ווים מתבצעים בשילוב.

3.1. @לפני

שיטות המסומנות עם @לפני רָצוֹן לבצע לפני כל תרחיש. בדוגמה שלנו, נפעיל את הדפדפן לפני כל תרחיש:

@ לפני אתחול הריק הפומבי () {startBrowser (); }

אם אנו מציינים כמה שיטות באמצעות @לפני, אנו יכולים להגדיר במפורש את סדר ביצוע השלבים:

@ לפני (סדר = 2) בטל פומבי לפני Scenario () {takeScreenshot (); }

השיטה לעיל מבצעת שנייה, כשאנחנו עוברים 2 כערך עבור להזמין פרמטר להערה. אנחנו יכולים גם לעבור 1 כערך לפרמטר ההזמנה של שיטת האתחול שלנו:

@Before (סדר = 1) אתחול בטל ציבורי ()

לכן, כאשר אנו מבצעים תרחיש, אִתחוּל() מבצע ראשון, ו beforeScenario () מבצע שני.

3.2. @BeforeStep

שיטות המסומנות עם @BeforeStepלבצע לפני כל צעד. בואו נשתמש בהערה כדי לצלם צילום מסך לפני כל שלב:

@BeforeStep חלל ציבורי לפני Step () {takeScreenshot (); }

3.3. @ AfterStep

שיטות המסומנות עם @ AfterStepלבצע אחרי כל צעד:

@AfterStep בטל בציבור afterStep () {takeScreenshot (); }

השתמשנו @ AfterStep כאן כדי לצלם צילום מסך אחרי כל צעד. זה קורה לא משנה אם הצעד מסתיים בהצלחה או נכשל.

3.4. @לאחר

שיטות המסומנות עם @לאחרלבצע לאחר כל תרחיש:

@ לאחר ביטול פומבי afterScenario () {takeScreenshot (); closeBrowser (); }

בדוגמה שלנו, ניקח צילום מסך אחרון ונסגור את הדפדפן. זה קורה לא משנה אם התרחיש מסתיים בהצלחה.

3.5. ה תַרחִישׁ פָּרָמֶטֶר

השיטות המסומנות בהערת וו יכולות לקבל פרמטר מסוג תַרחִישׁ:

@ לאחר ביטול ציבורי לפני Scenario (תרחיש תרחיש) {// קוד כלשהו}

האובייקט מהסוג תַרחִישׁ מכיל מידע על התרחיש הנוכחי. כלולים שם התרחיש, מספר השלבים, שמות הצעדים והסטטוס (לעבור או להיכשל). זה יכול להיות שימושי אם ברצוננו לבצע פעולות שונות לבדיקות שעברו ונכשלו.

4. ביצוע הוק

4.1. זרימה מאושרת

בואו נסתכל מה קורה כאשר אנו מנהלים תרחיש מלפפון עם כל ארבעת סוגי הווים:

מאפיין: חנות ספרים עם רקע הוקס: חנות הספרים ניתנת בספרים הבאים בחנות | השטן בעיר הלבנה | אריק לארסון | | האריה, המכשפה וארון הבגדים | סי.אס לואיס | | בגן החיות | אריק לארסון | תרחיש: 1 - מצא ספרים מאת הסופר כשאני מבקש ספר מאת הסופר אריק לארסון ואז איש המכירות אומר שיש שני ספרים תרחיש: 2 - מצא ספרים מאת הסופר, אבל לא נמצא כשאני מבקש ספר מאת הסופר מרסל פרוסט ואז איש המכירות אומר שיש 0 ספרים

אם מסתכלים על התוצאה של בדיקת בדיקה ב- IntelliJ IDE, אנו יכולים לראות את צו הביצוע:

ראשית, שנינו @לפני ווים מבצעים. ואז לפני ואחרי כל צעד, ה- @BeforeStep ו @ AfterStep ווים פועלים, בהתאמה. סוף - סוף, ה @לאחר וו רץ. כל הווים מבוצעים בשני התרחישים.

4.2. זרימה אומללה: צעד נכשל

בואו נראה מה יקרה אם צעד נכשל. כפי שניתן לראות בצילום המסך למטה, שניהם @לפני ו @לאחר ווים של הצעד הכושל מבוצעים. הצעדים הבאים מדלגים, ולבסוף, @לאחר וו מבצע:

ההתנהגות של @לאחר דומה ל- סוף סוף-סעיף אחרי נסה לתפוס בג'אווה. נוכל להשתמש בו לביצוע משימות ניקוי אם שלב נכשל. בדוגמה שלנו, אנחנו עדיין מצלמים צילום מסך גם אם התרחיש נכשל.

4.3. זרימה אומללה: וו נכשל

בואו נסתכל מה קורה כשקרס עצמו נכשל. בדוגמה למטה, הראשונה @BeforeStep נכשל.

במקרה זה, השלב בפועל אינו פועל, אך הוא כן @ AfterStep וו עושה. גם השלבים הבאים לא יפעלו, ואילו ה- @לאחר וו מתבצע בסוף:

5. ביצוע מותנה עם תגים

ווים מוגדרים באופן גלובלי ומשפיעים על כל התרחישים והשלבים. עם זאת, בעזרת תגי מלפפון, אנו יכולים להגדיר בדיוק עבור אילו תרחישים יש לבצע וו:

@ לפני (order = 2, value = "@ Screenshots") חלל ציבורי לפני Scenario () {takeScreenshot (); }

וו זה יבוצע רק עבור תרחישים שתויגו איתם @ צילומי מסך:

@ Screenshots תרחיש: 1 - מצא ספרים מאת הסופר כשאני מבקש ספר מאת הסופר אריק לארסון ואז איש המכירות אומר שיש שני ספרים

6. ג'אווה 8

אנחנו יכולים להוסיף מלפפון Java 8 תמיכה כדי להגדיר את כל הווים עם ביטויים למבדה.

זכור את וו האתחול שלנו מהדוגמה שלמעלה:

@ לפני (סדר = 2) אתחול חלל ציבורי () {startBrowser (); }

שכתוב בביטוי למבדה, אנו מקבלים:

BookStoreWithHooksRunSteps () {לפני (2, () -> startBrowser ()); }

אותו דבר עובד גם עבור @BeforeStep, @לאחר, ו @ AfterStep.

7. מסקנה

במאמר זה בדקנו כיצד להגדיר ווים מלפפון.

דנו באילו מקרים עלינו להשתמש בהם ומתי לא. לאחר מכן, ראינו באיזה סדר מתבצעים ווים וכיצד אנו יכולים להשיג ביצוע מותנה.

לבסוף, ראינו כיצד אנו יכולים להגדיר ווים עם סימון Java 8 lambda.

כרגיל, קוד המקור השלם של מאמר זה זמין באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found