qc

Szoftver screenshot:
qc
Szoftver adatai:
Változat: 0.1
Feltöltés dátuma: 14 Apr 15
Fejlesztő: Peter Scott
Engedély: Ingyenes
Népszerűség: 23

Rating: 4.0/5 (Total Votes: 2)

QC tesztelési eszköz, amely lehetővé teszi, hogy levelet tulajdonságok vársz igaz, és hagyja, hogy a számítógép generál randomizált vizsgálati esetek, hogy ellenőrizze, hogy ezek a tulajdonságok is tárolhatnak. & Nbsp; Ha például megírtuk tömörítésére és kibontására funkciók Egyes adatok tömörítő program, nyilvánvaló ingatlan teszt az, hogy tömörítse és kicsomagoláskor egy string adja vissza az eredeti szöveg. Itt van, hogyan lehetne kifejezni, hogy:
import unittest
import qc
osztály TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (self):
& Nbsp; "" "Test hogy tömörítésére és kicsomagoláskor visszatér az eredeti adatokat." ""
& Nbsp; data = qc.str () # Egy tetszőleges karaktersorozat. Értékeket véletlenszerűen.
& Nbsp; self.assertEqual (adatok, kibontására (Compress (adat)), képv (adat))
Ez egy közönséges teszt Python beépített unittest keret (ezért van annyi boilerplate). Másik megoldás, akkor nem pontosan ugyanaz a dolog, egy másik vizsgálat keretében, mint a minimálisan bőbeszédű, nagyon kellemes illat. A @ qc.property dekoratőr fut a feldíszített funkciót többször, és minden alkalommal a visszaadott értékek úgy működik, mint qc.string () különböznek. Más szóval, QuickCheck kompatibilis nagyjából minden egység vizsgálat keretén odakint; ez nem különösebben igényes.
Funkciók, így a qc.str (), qc.int (), és így tovább, generál tetszőleges értékeket egy bizonyos típusú. A fenti példában, mi azt állítja, hogy az ingatlan igaz az összes szálakat. Amikor futtatja a teszteket, QuickCheck generál véletlen húrok tesztelésre.
Észre fogod venni, hogy azt mondtam: "randomizált", nem "véletlen". Ez szándékos. Az értékek eloszlásának csípett tartalmazza érdekes értékek, mint üres stringet, vagy húrokat NULL karakter a közepén, vagy a húrok, amely angol szöveget. Általában QuickCheck kísérletet tesz egy jó mix okos trükkös értékek és a véletlen. Ez lényegében az, amit szeretnél csinálni, ha kellett írni nagyon alapos vizsgálati esetek kézzel, kivéve, hogy nem kell csinálni. A gyakorlatban a számítógép kevesebb előítéletek mit jelent épeszű adatok, így gyakran megtalálni a hibákat, hogy soha nem jutott eszedbe, hogy írjon vizsgálati esetek. Nem tudom, hogyan, hogy tudat alatt elkerüljék a hibákat.
Te nem korlátozódik a beépített tetszőleges értéket funkciókat. Használhatod őket építőelemekként létre a saját. Például:
class Point (tárgy):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
def pont ():
& Nbsp; "" "Get egy tetszőleges helyen." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; vissza Point (x, y)
Akkor lehet majd használni ezt a generálni tetszőleges helyen értékeket tulajdonságait. Itt egy orr-style teszt:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = pont ()
& Nbsp; érvényesíteni ABS (pt.x) + ABS (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Ha futtatásához valami varázslatos történik: QuickCheck megpróbál létrehozni trükkös értékek mind az x és y változók a Point osztály együtt, így látni fogod, pont, mint a (0, 0), (1, 1), ( 0, 1), (385904, 0), valamint a teljesen véletlenszerű is, mint a (584, -35809648). Más szóval, ahelyett, hogy csak rajz x és y értékek egy patak véletlen számok némi trükkös értékekkel benne, QuickCheck valóban megpróbál generálni trükkös kombinációi x és y koordináták.
Funkciók szerzés tetszőleges adatok
- Int (alacsony, magas) ad ints, az opcionális határokat alacsony és magas.
- Hosszú (alacsony, magas) ad vágyik, az opcionális határokat alacsony és magas.
- Float (alacsony, magas) ad úszók, az opcionális határokat alacsony és magas. Nem végtelenek, vagy NaN értékeket.
& Nbsp; str (hossz = Nincs, maxlen: nincs) ad húrok, típusú str. A kódolás UTF-8. Length esetén, a húrok lesz pontosan addig. Ha maxlen kap, string hosszát lesz a legtöbb maxlen karakter.
- Unicode (hossz = Nincs, maxlen: nincs) ad unicode húrok, a típus unicode. Length esetén, a húrok lesz pontosan addig. Ha maxlen kap, string hosszát lesz a legtöbb maxlen karakter.
- Nevet () ad neveket, Unicode. Ezek sora a prózai, mint a "John Smith", hogy az egzotikus - nevét tartalmazó nem törhető szóközök, vagy e-mail címeket, vagy Unicode karakterek kívül a Basic Multilingual Plane. Ez, ha lehet, még kevésbé perverz, mint a neve is látni fogod kellően sok olyan internetes adatok.
- NameUtf8 () megegyezik a neve (). Kódolnak ("UTF8").
- FromList (db) visszatér véletlenszerű elemek listából. Ez akkor hasznos, mely saját tetszőleges adat generátor funkciókat.
- Randstr (hossz = Nincs, maxlen = sys.maxint) ad húrok véletlen bájt. Length esetén, a húrok lesz pontosan addig. Ha maxlen kap, string hosszát lesz a legtöbb maxlen bájt.
A húrok által termelt str és unicode randomizált, de néhány erőfeszítéseket tettek bele, hogy ezeket megfelelően perverz, mint hogy felfedje hibákat egy csomó karakterlánc feldolgozása kódot. A névlista lazán alapul borzalmas emlékeit látta név feldolgozási kódok karambol valós adatokat, újra és újra és újra, mint vált egyre inkább egyértelmű, hogy a világ őrült, és mi valóban ítélve. (Ez az érzés átmegy egyszer kap elég teszt lefedettség és a dolgok végül megáll összeomlik. Van remény!)
A név és vonós például adatok qc.arbitrary lehet érdekes, mint egy forrás több deteministic teszt adatok. Nyugodtan kölcsön semmit. A belső mágikus, de a varázslatos belső részek, a legérdekesebbek vannak qc.arbitrary és qc.

követelmények :

  • Python

Hasonló program

Attest
Attest

14 Apr 15

tdaemon
tdaemon

11 May 15

bug-repo-syncer
bug-repo-syncer

14 Apr 15

Hozzászólások a qc

Hozzászólás nem található
Megjegyzés hozzáadása
Kapcsolja be a képeket!