dingus tür sahte bir nesne gibi. Temel fark vaktinden beklentilerini kurmak kalmamasıdır. Sadece başka bir nesne veya sınıf yerine bir şapşal kullanarak, kodunuzu çalıştırmak ve bunun için ne kaydeder. Kodunuzu icra edildikten sonra Sonra, bunu dingus yaptığını ne onaylamaları yapabilirsiniz.
Yeni bir dingus Dingus sınıfından oluşturulur. Siz oyunda birden dinguses vardır, özellikle testlerinizi hata ayıklama ile yardımcı olur dinguses isimleri, verebilirsiniz.
& Nbsp; >>> dingus dingus ithal gelen
& Nbsp; >>> d = Dingus ('root')
& Nbsp; >>> d
& Nbsp;
Bir dingus herhangi niteliğini erişme yeni şapşal dönecektir.
& Nbsp; >>> d.something
& Nbsp;
Özel dingus yöntemleri için bir kaç istisna vardır. Biz biraz bazı görürsünüz.
Bir dingus ayrıca bir işlev veya yöntem gibi çağrılabilir. Bu verin veya bu argümanlar nelerdir kaç argüman umurumda değil. Bir dingus yapılan aramalar her zaman ne olursa olsun argümanlar, aynı nesneyi dönecektir.
& Nbsp; >>> d ()
& Nbsp;
& Nbsp; >>> d ('argüman')
& Nbsp;
& Nbsp; >>> d (55)
& Nbsp;
KAYIT VE iddialar
Herhangi bir zamanda bir dingus yapılmış aramaların bir listesini alabilirsiniz. Çağrı listesindeki her giriş içerir:
& Nbsp; * denilen yöntemin adı (veya "()" dingus kendisi denirdi ise)
& Nbsp; * argümanlar, ya da () hiçbiri eğer
& Nbsp; * anahtar kelime argumnets, ya {} hiçbiri eğer
& Nbsp; arayana döndü * değeri
Burada şimdiye kadar d yaptığınız aramaların bir listesi:
& Nbsp; >>> pprint ithalat pprint gelen
& Nbsp; >>> pprint (d.calls)
& Nbsp; [('()', () {}
& Nbsp; ('()', ('argüman',), {},
& Nbsp; ('()', (55), {},
Ada, argümanlar, ve anahtar kelime argümanlar aramaları filtreleyebilirsiniz:
& Nbsp; >>> pprint (d.calls ('()', 55))
& Nbsp; [('()', (55), {},
Belirli bir argüman değerini umurumda değil ise filtreleme yaparken, siz değer Dontcare kullanabilirsiniz:
& Nbsp; >>> dingus Dontcare ithal gelen
& Nbsp; >>> pprint (d.calls ('('), Dontcare))
& Nbsp; [('()', ('argüman',), {},
& Nbsp; ('()', (55), {},
Dinguses sadece erişilen özelliklere sahip ve çağrılabilir daha fazlasını yapabilirsiniz. Onlar birçok Python operatörleri destekler. amaç izin ve herhangi bir etkileşimi kayıt için:
& Nbsp; >>> d = Dingus ('root')
& Nbsp; >>> (2 ** d.something) ['merhaba'] () / 100 * 'foo'
& Nbsp;
(Umarım gerçek-dünya dingus kayıtları bu gibi bakmak olmaz!)
yama
Dingus testler sırasında nesneleri yama için bir bağlam yöneticisi sağlar. Örneğin:
& Nbsp; >>> dingus ithalat yama
& Nbsp; >>> import urllib2
& Nbsp; >>> yama ('urllib2.urlopen') ile:
& Nbsp; ... Baskı urllib2.urlopen .__ class__
& Nbsp;
& Nbsp; >>> print urllib2.urlopen .__ class__
& Nbsp;
Ayrıca deney yöntemleri bir dekoratör olarak kullanabilirsiniz:
& Nbsp; >>>patch ('urllib2.urlopen')
& Nbsp; ... def test_something (öz):
& Nbsp; ... pas
& Nbsp; ...
TEHLİKELİ MAGIC
Testleri çalıştırırken dingus da otomatik olarak modülün küresellerle değiştirebilirsiniz. Bu tamamen izole birim testleri yazmak için izin verir. Örnek için örnekler / urllib2 / test_urllib2.py bakınız. Çok kırılgan testleri teşvik gibi yazar artık, bu özelliği önerir. El alaycı bağımlılıkları acı gerekir; . Bir sınıf çok başkaları ile işbirliği yaparken ağrı size söyleyecektir
Gereksinimler :
- Python
Yorum Bulunamadı