وdingus هو نوع من مثل كائن وهمي. والفرق الرئيسي هو ان لم تقم بإعداد التوقعات في وقت مبكر. يمكنك فقط تشغيل التعليمات البرمجية، وذلك باستخدام dingus في مكان الكائن أو فئة أخرى، وأنه سوف يسجل ما يحدث له. ثم، مرة واحدة وقد مارست التعليمات البرمجية الخاصة بك، يمكنك تقديم تأكيدات حول ما فعلت لdingus.
يتم إنشاء dingus جديدة من فئة Dingus. يمكنك إعطاء أسماء dinguses، والتي تساعد مع التصحيح الاختبارات الخاصة بك، وخاصة عندما تكون هناك dinguses متعددة في اللعب.
على & nbsp؛ >>> من dingus استيراد Dingus
على & nbsp؛ >>> د = Dingus (جذر ')
على & nbsp؛ >>> د
على & nbsp؛
والوصول إلى أي سمة من dingus إرجاع dingus الجديد.
على & nbsp؛ >>> d.something
على & nbsp؛
هناك استثناءات قليلة لطرق dingus خاص. سنرى بعض في شيء.
ويمكن أيضا أن يطلق على dingus مثل وظيفة أو الأسلوب. فإنه لا نهتم بعدد الحجج تعطيه أو ما هي تلك الحجج. سوف المكالمات إلى dingus دوما بإرجاع نفس الكائن، بغض النظر عن الحجج.
على & nbsp؛ >>> د ()
على & nbsp؛
على & nbsp؛ >>> د ('حجة')
على & nbsp؛
على & nbsp؛ >>> د (55)
على & nbsp؛
تسجيل والتأكيدات
في أي وقت نتمكن من الحصول على قائمة المكالمات التي تم إجراؤها على dingus. لكل إدخال في قائمة المكالمات يحتوي على:
ونبسب؛ * اسم طريقة تسمى (أو "()" إذا كان dingus نفسه كان يسمى)
ونبسب؛ * الحجج، أو () إذا لا شيء
ونبسب؛ * وargumnets الكلمة، أو {} إذا لا شيء
ونبسب؛ * القيمة التي تم إرجاعها إلى المستدعي
وهنا لائحة من المكالمات التي قمنا بها إلى d حتى الآن:
على & nbsp؛ >>> من pprint pprint استيراد
على & nbsp؛ >>> pprint (d.calls)
على & nbsp؛ [('()'، ()، {}،
على & nbsp؛ ('()'، ('حجة'،)، {}،
على & nbsp؛ ('()'، (55 عاما)، {}،
كما يمكنك تحديد المكالمات بالاسم، والحجج، والحجج الكلمات الرئيسية:
على & nbsp؛ >>> pprint (d.calls ('()'، 55))
على & nbsp؛ [('()'، (55 عاما)، {}،
إذا كنت لا تبالي قيمة حجة معينة، يمكنك استخدام DontCare القيمة عند تصفية:
على & nbsp؛ >>> من dingus استيراد DontCare
على & nbsp؛ >>> pprint (d.calls ('()'، DontCare))
على & nbsp؛ [('()'، ('حجة'،)، {}،
على & nbsp؛ ('()'، (55 عاما)، {}،
يمكن Dinguses تفعل أكثر من مجرد لديهم سمات الوصول إليها ويتم استدعاؤها. أنها تدعم العديد من مشغلي بيثون. الهدف هو السماح، وتسجيل، أي التفاعل:
على & nbsp؛ >>> د = Dingus (جذر ')
على & nbsp؛ >>> (2 ** d.something) ['مرحبا'] () / 100 * 'فو'
على & 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؛ ... مواطنه test_something (النفس):
على & nbsp؛ ... تمريرة
على & nbsp؛ ...
MAGIC DANGEROUS
Dingus يمكن أيضا استبدال تلقائيا غلوبالس وحدة نمطية عند تشغيل الاختبارات. هذا يسمح لك لإرسال وحدة الاختبارات معزولة تماما. انظر الأمثلة / urllib2 / test_urllib2.py على سبيل المثال. مقدم البلاغ لم يعد يوصي هذه الميزة، لأنها يمكن أن تشجع الاختبارات هشة جدا. يجب أن يشعر بالألم تبعيات ساخرا يدويا. سوف الألم اقول لكم عندما تتعاون فئة مع الكثير من الآخرين
المتطلبات:.
بيثون
لم يتم العثور على التعليقات