dingus הוא כמו סוג של אובייקט מדומה. ההבדל העיקרי הוא שאתה לא להגדיר ציפיות מבעוד מועד. אתה פשוט להפעיל את הקוד שלך, באמצעות dingus במקום של אובייקט או בכיתה אחרת, וזה יהיה להקליט את מה שקורה לו. ואז, ברגע שהקוד שלך מומש, אתה יכול לקבוע קביעות על מה שהיא עשתה לdingus.
Dingus חדש נוצר מכיתת Dingus. אתה יכול לתת לי dinguses שמות, אשר מסייע באיתור באגים הבדיקות שלך, במיוחד כאשר יש dinguses מרובה במשחק.
& Nbsp; >>> מdingus לייבא Dingus
& Nbsp; >>> d = Dingus ('שורש')
& Nbsp; >>> ד
& Nbsp; <שורש Dingus>
גישה לכל תכונה של dingus תחזור dingus חדש.
& Nbsp; >>> d.something
& Nbsp;
יש כמה יוצאים מן הכלל לשיטות dingus המיוחד. אנחנו תראו כמה בקצת.
Dingus יכול גם להיקרא כמו פונקציה או שיטה. לא אכפת לו כמה טיעונים אתה נותן לו או מה הן טענות אלה. שיחות לdingus תמיד תחזיר אותו האובייקט, ללא קשר לטענות.
& Nbsp; >>> ד ()
& Nbsp; <שורש Dingus ()>
& Nbsp; >>> ד ('טיעון')
& Nbsp; <שורש Dingus ()>
& Nbsp; >>> ד (55)
& Nbsp; <שורש Dingus ()>
הקלטה ומצגים
בכל פעם שאנחנו יכולים לקבל רשימה של שיחות שנעשו לdingus. כל ערך ברשימת השיחות מכיל:
& Nbsp; * שמו של השיטה הנקרא (או "()" אם dingus עצמו נקרא)
& Nbsp; * הטיעונים, או () אם אף אחד
& Nbsp; * argumnets מילת מפתח, או {} אם אף אחד
& Nbsp; * הערך שהוחזר למתקשר
הנה רשימה של השיחות שעשינו לד עד כה:
& Nbsp; >>> מpprint יבוא pprint
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', (), {}, <שורש Dingus ()>),
& Nbsp; ('()', ('טיעון',), {}, <שורש Dingus ()>),
& Nbsp; ('()', (55,), {}, <שורש Dingus ()>)]
שלך לסנן שיחות לפי שם, טיעונים, וטיעונים של מילות מפתח:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [('()', (55,), {}, <שורש Dingus ()>)]
אם לא אכפת לך על הערך של טיעון מסוים, אתה יכול להשתמש בDontCare הערך כאשר סינון:
& Nbsp; >>> מdingus לייבא DontCare
& Nbsp; >>> pprint (d.calls ('()', DontCare))
& Nbsp; [(, ('ויכוח' '()',), {}, <שורש Dingus ()>),
& Nbsp; ('()', (55,), {}, <שורש Dingus ()>)]
Dinguses יכול לעשות יותר מאשר רק צריכים תכונות לגשת וייקרא. הם תומכים במפעילי Python רבים. המטרה היא לאפשר ל, ולהקליט, כל אינטראקציה:
& Nbsp; >>> d = Dingus ('שורש')
['שלום'] () / 100 "foo" * >>> (2 ** d.something); & nbsp
& Nbsp;
(אני מקווה שהקלטות dingus העולם האמיתי שלך לא נראות כך!)
תיקון
Dingus מספק למנהל הקשר לתיקון אובייקטים במהלך בדיקות. למשל:
& Nbsp; >>> מתיקון יבוא dingus
& Nbsp; >>> urllib2 יבוא
& Nbsp; >>> עם תיקון ("urllib2.urlopen '):
& Nbsp; ... הדפסת urllib2.urlopen .__ class__
& Nbsp; <'dingus.Dingus' הכיתה>
& Nbsp; >>> הדפסת urllib2.urlopen .__ class__
& Nbsp; <'פונקציה' סוג>
ניתן גם להשתמש בזה כמעצב על שיטות הבדיקה שלך:
& Nbsp; >>>patch ('urllib2.urlopen')
& Nbsp; ... def test_something (עצמי):
& Nbsp; ... לעבור
& Nbsp; ...
MAGIC מסוכן
Dingus גם יכול באופן אוטומטי להחליף globals של מודול בעת הפעלת מבחנים. זה מאפשר לך לכתוב בדיקות יחידה מבודדות באופן מלא. ראה דוגמאות / urllib2 / test_urllib2.py לדוגמא. המחבר כבר לא ממליץ בתכונה זו, כפי שהוא יכול לעודד בדיקות מאוד שבירות. אתה צריך להרגיש את הכאב של תלות לועגת באופן ידני; . הכאב יגיד לך מתי כיתה משתפת פעולה עם רבים רבים אחרים
דרישות :
- Python
תגובות לא נמצא