qc

Yazılım ekran görüntüsü:
qc
Yazılım detaylar:
Versiyon: 0.1
Qayıt: 14 Apr 15
Geliştirici: Peter Scott
Lisans: Ücretsiz
Popülerlik: 139

Rating: 4.0/5 (Total Votes: 2)

.

qc size & nbsp doğru tutun ve bilgisayar bu özellikleri aslında tutmak olmadığını kontrol etmek randomize test durumları oluşturmasına izin bekliyoruz özelliklerini yazma sağlayan bir test aracıdır; Örneğin, kompres yazılı ve fonksiyonları sıkıştırmasını varsa Bazı veri sıkıştırma programı, test bariz özellik sıkıştırmak ve bir dize açılıyor orijinal dize geri vermesidir. İşte o ifade nasıl var:
ithalat unittest
ithalat qc
sınıf TestCompression (unittest.TestCase):
& Nbsp; * qc.property
& Nbsp; def test_compress_decompress (öz):
& Nbsp; "" ". Test olduğunu sıkıştırmak ve döndürür özgün verileri decompressing" ""
& Nbsp; data = qc.str () # keyfi bir dize. Değerler randomize.
& Nbsp; self.assertEqual (veri, sıkıştırmasını (sıkıştırmak (veri)), repr (veri))
Yani (çok klişe var neden olan) Python yerleşik unittest çerçevesi ile sıradan bir test. Alternatif olarak, minimal ayrıntılı, oldukça hoş burun gibi, farklı bir test çerçevesi ile aynı şeyi yapabilirdi. @ Qc.property dekoratör dekore fonksiyonu birkaç kez çalışır ve her zaman değerleri () farklı qc.string gibi işlevleri tarafından döndürülen. Diğer bir deyişle, QuickCheck orada hemen hemen her birim test çerçevesi ile uyumlu; özellikle talep değil.
Qc.str gibi fonksiyonlar (), qc.int (), ve böylece, belirli bir tip keyfi değerler üretmek. Yukarıdaki örnekte, biz özelliği tüm dizeleri için de geçerlidir iddia ediyoruz. Eğer testler çalıştırdığınızda, QuickCheck test için randomize dizeleri üretecektir.
Ben, "randomize" "rastgele" değil dedi fark edeceksiniz. Bu kasıtlı olduğunu. değerlerin dağılımı İngilizce metin içeren ilginç değerleri, boş dizeler gibi, ya da ortada boş karakterlerden olan dizeleri, ya da dizeler içerecek şekilde tweaked. Genel olarak, QuickCheck zeki zor değerler ve rastgelelik iyi bir karışım vermeye çalışır. Bu size bunu yapmak zorunda değilsiniz dışında, elle gerçekten kapsamlı test durumları yazmak zorunda eğer, ne yapacağını esasen. Uygulamada, bilgisayar aklı başında veri teşkil hakkında az önyargılarını vardır, bu yüzden sık sık test durumları yazmak için size meydana gelmiş asla hata bulacaksınız. Bu bilinçaltında hataları önlemek için nasıl bilmiyor.
Siz yerleşik keyfi değer fonksiyonları sınırlı değilsiniz. Kendi oluşturmak için yapı taşları olarak kullanabilirsiniz. Örneğin:
sınıf Noktası (object):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = şamandıra (x), şamandıra (y)
def noktası ():
& Nbsp; "" "gelişigüzel bir nokta olsun." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp y = qc.int (-34, 50)
& Nbsp; Noktası dönmek (x, y)
Daha sonra özelliklerinde keyfi nokta değerlerini oluşturmak için kullanabilirsiniz. İşte burun tarzı testi var:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; nk = nokta ()
& Nbsp; abs (pt.x) + abs iddia (pt.y)> = Math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Eğer bu çalıştırdığınızda, büyülü bir şey olur: Eğer (0, 0), (1, 1), (gibi noktaları görürsünüz, böylece QuickCheck birlikte, Point sınıfı x ve y hem de değişkenler için zor değerler üretmek için çalışacağız (584 gibi 0, 1), (385904, 0), hem de tamamen rastgele olanlar -35809648). Diğer bir deyişle, sadece bazı zor değerleri ile rastgele sayılar akışından x ve y değerlerini çizim ziyade, QuickCheck aslında x ve y koordinatları zor kombinasyonları oluşturmak için çalışacağız.
Rastgele verileri almak için Fonksiyonlar
- (Düşük, yüksek) int düşük ve yüksek opsiyonel sınırları arasında, ints verir.
- Uzun (düşük, yüksek) düşük ve yüksek opsiyonel sınırları arasında, uzun ürünler verir.
- (Düşük, yüksek) şamandıra, düşük ve yüksek opsiyonel sınırları arasında, yüzen verir. Hiçbir Sonsuzluğun veya NaN değerleri.
& Nbsp; str (uzunluk = Yok, maxlen = Yoktur) tipi str, dizeleri verir. kodlaması UTF-8'dir. Uzunluk verilirse, dizeleri tam olarak uzun olacak. Enbüyük verilirse, dize uzunluğu en enbüyük karakterler olacak.
- Unicode (uzunluk = Yok, maxlen = Yoktur) tipi unicode bir unicode dizeleri verir. Uzunluk verilirse, dizeleri tam olarak uzun olacak. Enbüyük verilirse, dize uzunluğu en enbüyük karakterler olacak.
- Isim () Unicode isimleri verir. Temel Multilingual Plane dışında bölünemez boşluk, ya da e-posta adresleri veya Unicode karakter içeren isimler - egzotik "John Smith" gibi yavan Bunlar arasında,. Isimler daha az sapık şey, Internet veri yeterince büyük sette göreceksiniz eğer bu, bir.
- NameUtf8 () adıyla aynı olan () ('utf8') kodlamak..
- FromList (öğe), bir listeden rastgele öğeleri döndürür. Bu, kendi keyfi veri jeneratör fonksiyonlarını oluşturmak için çoğunlukla yararlıdır.
- Randstr (uzunluk = Yok, enbüyük = sys.maxint) rastgele bayt dizeleri verir. Uzunluk verilirse, dizeleri tam olarak uzun olacak. Enbüyük verilirse, dize uzunluğu bayt enbüyük en olacaktır.
str ve unicode tarafından üretilen dizeleri randomize, ancak biraz çaba dize işleme kodu bir sürü hataları ortaya olarak onları yeterince sapık hale girmiştir. isim listesi gevşek dünya deli olduğu giderek daha açık hale gibi, tekrar tekrar ve tekrar, gerçek dünya verileri isim işleme kodu kazasında görme korkunç anıları dayanmaktadır ve biz gerçekten mahkumdur. (Yeterli test kapsamı ve nihayet çökmesini engelleyen şeyler olsun bir kez bu duygu umut vardır. Geçer!)
qc.arbitrary isim ve dize örneği verileri daha deteministic test durumda bir veri kaynağı olarak ilginç olabilir. Herhangi bunun ödünç çekinmeyin. internals sihirli, büyülü ama iç parçaların, en ilginç olanları qc.arbitrary ve QC olan

Gereksinimler :.

  • Python

Benzer yazılım

PyHamcrest
PyHamcrest

11 May 15

CppSpec
CppSpec

3 Jun 15

nose-json
nose-json

14 Apr 15

Yorumlar qc

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!