TFF כולל ספרייה קטנה בשם golden
שמקלה על כתיבה ותחזוקה של מבחני זהב.
מה הם מבחני זהב? מתי עלי להשתמש בהם?
בדיקות הזהב משמשות כאשר אתה רוצה שמפתח ידע שהקוד שלו שינה את הפלט של פונקציה. הם מפרים מאפיינים רבים של בדיקות יחידות טובות בכך שהם מבטיחים הבטחות לגבי התפוקות המדויקות של פונקציות, במקום לבדוק קבוצה מסוימת של מאפיינים ברורים ומתועדים. לפעמים לא ברור מתי "צפוי" שינוי בפלט הזהב או שהוא פוגע ברכוש כלשהו שמבחן הזהב ביקש לאכוף. ככזה, מבחן יחידה עם גורמים היטב עדיף בדרך כלל על מבחן זהב.
עם זאת, בדיקות זהב יכולות להיות שימושיות ביותר לאימות התוכן המדויק של הודעות שגיאה, אבחון או קוד שנוצר. במקרים אלה, בדיקות זהב יכולות להיות בדיקת ביטחון מועילה לכך שכל שינוי בפלט שנוצר "נראה נכון".
כיצד עלי לכתוב מבחנים באמצעות golden
?
golden.check_string(filename, value)
היא נקודת הכניסה הראשית לספריית golden
. זה יבדוק את מחרוזת value
מול התוכן של קובץ שרכיב הנתיב האחרון שלו הוא filename
. יש לספק את הנתיב המלא לשם filename
באמצעות שורת הפקודה --golden <path_to_file>
ארגומנט. באופן דומה, קבצים אלה חייבים להיות זמינים לבדיקות באמצעות ארגומנט data
לכלל py_test
BUILD. השתמש בפונקציית location
כדי ליצור נתיב יחסי מתאים:
py_string_test(
...
args = [
"--golden",
"$(location path/to/first_test_output.expected)",
...
"--golden",
"$(location path/to/last_test_output.expected)",
],
data = [
"path/to/first_test_output.expected",
...
"path/to/last_test_output.expected",
],
...
)
לפי המוסכמה, קבצי זהב צריכים להיות ממוקמים בספריית אחים עם שם זהה לזה של יעד הבדיקה שלהם, עם סיומת _goldens
:
path/
to/
some_test.py
some_test_goldens/
test_case_one.expected
...
test_case_last.expected
כיצד אוכל לעדכן קבצי .expected
?
ניתן לעדכן קבצי .expected
על ידי הפעלת יעד הבדיקה המושפע עם הארגומנטים --test_arg=--update_goldens --test_strategy=local
. יש לבדוק את ההבדל המתקבל עבור שינויים בלתי צפויים.