
@DataProvider עם name = "details". המתודה מחזירה מערך מסוג Object[][].new Object[][], ורושמים כל שורה בסוגריים מסולסלים, מופרדות בפסיק. בשיעור יש שלוש שורות של שם, אימייל וסיסמה.dataProvider = "details", ובהכרזת הטסט מגדירים פרמטרים בשם name, email ו-password.הטקסט המלא של הדקות הראשונות בהרצאה «Data Driven Test - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בשיעור הקודם דיברנו על השלב הבא בסביבת האוטומציה שלנו, שזה ה-data-driven. איך אנחנו בעצם יכולים להזין נתונים ממקור חיצוני לתוך הטסט שלנו, ובעצם ליצור אותו כטסט מרובה איתרציות.
זאת אומרת, טסט שיכול להריץ שוב ושוב את אותו תסריט, אבל כל פעם עם נתונים אחרים, שאת הנתונים הוא מקבל ממקור דאטה חיצוני. אז אמרנו שזה השלב הבא בסביבת האוטומציה שלנו, זה יקדם את סביבת האוטומציה שלנו קדימה, ומה שאנחנו רוצים זה לקבל את הנתונים ממקור חיצוני.
דיברנו על מה זה Data Object, Data Object זה בעצם, ההגדרה שלו הוא מערך דו-מימדי. כשאני אומר מערך דו-מימדי, נתנו את הדוגמה של מערך אחד, שיש לנו name אחד, last name אחד, אימייל אחד זה מערך שטוח, מערך דו-מימדי זה מערך שיכול להכיל בעצם כמה שורות של נתונים, name אחד, last name אחד,
אימייל אחד, אבל גם את ה-name 2, last name 2, אימייל 3, name 3, last name 3 וכדומה. זאת אומרת, מין שורת נתונים, טבלת נתונים שמסודרת לפי שורות.
זה הדאטה אובג'קט תכף אנחנו מיד אנחנו נדגים בדיוק איך זה נראה אצלנו בג'אווה זה יהיה קצת יותר ברור אמרנו הסיבות שאנחנו רוצים להשתמש בדאטה הדריוון זה בעצם לנצל את היכולות של האוטומציה ולהריץ שוב את הטסט שוב ושוב עם כל פעם עם נתונים שונים נתונים חדשים אז בואו נראה דוגמה קצת יותר פרקטית רגע לפני שאנחנו נעבור לדוגמה הפרקטית
נגיד שמקור דאטה חיצוני יכול להיות קובץ אקסל, הוא יכול להיות דאטה אובייקט ישיר שאנחנו כותבים לתוכו נתונים כמו שנעשה בדוגמא עכשיו והוא יכול להיות גם מקור נתונים חיצוני כמו דאטה בייס, sql או רקל וכדומה וגם את זה אנחנו נדגים ונסביר איך אנחנו עושים את
ההתחברות הזאת אז דאטה דריוון בהכרח מקור חיצוני מקור נתונים חיצוני שיכול להיות אקסל דאטה בייס או אובג'קט דאטה שעכשיו אנחנו נבצע אותו. אז בואו ניגש ישר לדוגמה שלנו של היום וניצור לנו את הטסט שלנו שיהיה מובנה נתונים יש לנו פה את הטסט שהשתמשנו בו כדי להזין נתונים לרג'סטריישן אם אתם
זוכרים זה הפרויקט אוטומציה שלנו קראנו לו Page Object Design ויצרנו טסט Page Object ובתוכו יצרנו מספר טסטים לטסט אחד מה שהוא מבצע, הוא מבצע גישה לטופס רג'יסטרציה ואז בעצם הזנת נתונים. בואו נריץ את זה פעם אחת ונראה איך הוא מבצע את הנתונים.
אנחנו עובדים עם האתר של time and date ובעצם שם אנחנו נכנסים לאיזשהו פורום, איזשהו טופס שבו אנחנו ממלאים פרטים וזו דוגמה טובה לפעולה של הזנת נתונים חיצוניים.
אז ראיתם זה היה קצת מהיר אבל ראיתם שבעצם הנתונים אוזנו בו בואו נריץ את זה עוד פעם הפעם עם breakpoint ונראה שזה באמת מגיע לפה נעשה פה את הברייקפוינט שלנו ונריץ את זה בדיבאג מאוד על ידי הכפתור דיבאג נסוגר את החלונות האחרים שיהיה יותר ברור ויש לנו time and date ואנחנו נכניסים ל-registration ופה יש לנו טופס אנחנו ממלאים את הפרטים
והוא ביצע את השליחה, הוא לא עצר לי בדיבאג, הוא עשה אחרי הלחיצה, אז נרצה את זה עוד פעם הפעם, אני מקווה שאנחנו נראה בדיוק את הנתונים. בקיצור, מה שאנחנו רוצים לעשות כרגע זה במקום להיות תלויים בנתונים שכתבנו ארטקודד בתוך הטסט שלנו, זה לשחרר את התלות שלנו מהארטקודד הזה, מהנתונים
הארטקודד האלה ששלחנו, כתבנו ג'ימי בי וכל היתר כל המידע האחר שכתבנו ואנחנו בעצם רוצים את הנתונים האלה לעשות נתונים שמתחלפים נתונים שמגיעים ממקור חיצוני אבל כל פעם אנחנו נוודא שבאמת ההתנהגות של האפליקציה היא אותה התנהגות למרות שהנתונים מתחלפים אז בואו נראה בואו נראה איך אנחנו נמצא את
זה אז אני אעצור תריצה ויש לי פה את הקובץ עצמו את הטסט עצמו אז מה שאנחנו עושים מבחינת השלבים של לעבוד עם הקורדאטה החיצוני הדבר הראשון שאנחנו נרצה לעשות זה בעצם ליצור את האובייקט שלנו שהוא אותו אובייקט דאטה שאנחנו רוצים לשלוח ואת זה אנחנו צריכים לעשות על ידי מתודה מיוחדת אנחנו משתמשים באנוטציה data provider שזו אנוטציה של testng
שבעצם היא אומרת שמיד אחריה תבוא תגיע מתודה שתייצר לנו את אותו אובייקט, אותו אובייקט של המערך הדו-מימדי, אובייקט דאטה שהוא יכיל את השורות של המידע שאנחנו רוצים לשלוח לטסט שלנו.
לדוגמה טסט רג'יסטר אוקיי אז פה יש לנו את הנתונים האלה ואנחנו רוצים להעביר אותם בעצם לדאטה פרוביידר אז הכרזתי על דאטה פרוביידר אני פותח סוגריים ואני צריך לתת לו אטריביוט של name ונקרא לו נקרא לו details תוך הגרשיים אני כותב details אוקיי שם שרירותי הייתי יכול לתת לו כל שם אחר בעצם ופה אני כותב public אני יוצר לי את המתודה זה הסוג המשתנה שאותו הוא יחזיר והשם שלו
אני אתן לו את אותו שם כמו שקראתי לו בדאטה פרוביידר זה לא בהכרח חייב להיות אותו שם אבל זה השם של המתודה וזה השם של האישות ה-TestNG כדאטה פרוביידר ואני מתחיל לייצר בעצם את האובג'קט שלי שאני