qc

Software kuvakaappaus:
qc
Ohjelmiston tiedot:
Versio: 0.1
Lähetyksen päivämäärä: 14 Apr 15
Kehittäjä: Peter Scott
Lupa: Vapaa
Suosio: 23

Rating: 4.0/5 (Total Votes: 2)

qc testaus työkalu, jolla voit kirjoittaa ominaisuuksia, jotka aiotte pitää paikkansa, ja anna tietokoneen tuottaa satunnaistettu testitapaukset tarkistaa, että nämä ominaisuudet todella pitää. & Nbsp; Jos esimerkiksi olet kirjoittanut pakata ja purkaa toiminnot Joidenkin tietojen pakkausohjelma, ilmeinen ominaisuus testi on, että pakkaukseen ja purkamiseen merkkijono antaa takaisin alkuperäisen merkkijonon. Näin voit ilmaista, että:
tuonti unittest
tuonti qc
luokan TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (itse):
& Nbsp; "" "Test että pakkaukseen ja purkamiseen palaa alkuperäiset tiedot." ""
& Nbsp; data = qc.str () # mielivaltainen merkkijono. Arvot ovat satunnaistettuja.
& Nbsp; self.assertEqual (data, purkaa (pakkaa (data)), repr (data))
Se tavallinen testi Pythonin sisäänrakennettu unittest puitteissa (siksi on niin paljon boilerplate). Vaihtoehtoisesti voit tehdä täsmälleen sama asia eri testaus puitteet, kuten minimaalisesti monisanainen, varsin miellyttävä nenä. @ Qc.property sisustaja kulkee sisustettu toiminto useita kertoja, ja joka kerta palauttamat arvot toimintoja kuten qc.string () ovat erilaiset. Toisin sanoen, QuickCheck on yhteensopiva melko paljon joka laite testi puitteet siellä; se ei ole erityisen vaativa.
Toiminnot, kuten qc.str (), qc.int (), ja niin edelleen, tuottaa mielivaltainen arvot tietyntyyppisiä. Yllä olevassa esimerkissä, me väittää, että kiinteistön pätee kaikille jousille. Kun suoritat testejä, QuickCheck tuottaa satunnaistetussa jousille testaukseen.
Huomaat, että sanoin "satunnaistettu", ei "random". Tämä on tarkoituksellista. Jakauma arvojen viritetty sisältävät mielenkiintoisia arvoja, kuten tyhjiä merkkijonoja tai kieliä NUL merkkiä keskellä, tai jouset sisältäviä Englanti tekstiä. Yleensä QuickCheck yrittää antaa hyvä yhdistelmä taitava hankala arvojen ja satunnaisuutta. Tämä on lähinnä mitä tekisit, jos olisit kirjoittaa todella perusteellinen testitapauksia käsin, paitsi että sinun ei tarvitse tehdä sitä. Käytännössä tietokone on vähemmän ennakkoluuloja, mikä muodostaa järkevät tiedot, joten se on usein löytää vikoja, jotka olisi koskaan tapahtunut teille, kirjoittaa testitapauksia. Se ei tiedä, miten alitajuisesti välttää vikoja.
Et ole rajoitettu sisäänrakennettu mielivaltainen arvo toiminnot. Voit käyttää niitä rakennuspalikoita luoda omia. Esimerkiksi:
luokan Point (objekti):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
def kohta ():
& Nbsp; "" "Get mielivaltainen piste." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; palaa kohta (x, y)
Voit sitten käyttää tätä tuottaa mielivaltainen piste arvoja ominaisuuksia. Tässä nenä-tyyliin testi:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = piste ()
& Nbsp; väittää abs (pt.x) + abs (pt.y)> = Math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Kun olet suorittanut tämän, jotain maagista tapahtuu: QuickCheck yrittää tuottaa hankala arvot sekä x ja y muuttujia Point luokassa, yhdessä, joten näet kohdat kuten (0, 0), (1, 1), ( 0, 1), (385904, 0), samoin kuin täysin sattumanvaraisesti välineisiin, kuten (584, -35.809.648). Toisin sanoen, sen sijaan vain piirustus x ja y-arvot virrasta satunnaisia ​​numeroita joidenkin hankala arvoja se, QuickCheck todella yrittää luoda hankala yhdistelmiä x ja y koordinaatit.
Toiminnot saada mielivaltaista dataa
- Int (matala ja korkea) antaa ints, välillä valinnainen rajoja matala ja korkea.
- Pitkät (matala ja korkea) antaa pitkät, välillä vapaaehtoinen rajat matala ja korkea.
- Float (matala ja korkea) antaa kellukkeet, välillä valinnainen rajoja matala ja korkea. Ei Äärettömyydet tai NaN-arvot.
& Nbsp; str (pituus = None, maxlen = Ei mitään) antaa jouset, tyypin str. Koodaus on UTF-8. Jos pituus on annettu, jouset on täsmälleen niin kauan. Jos maxlen annetaan, merkkijonon pituus on korkeintaan maxlen merkkiä.
- Unicode (pituus = None, maxlen = Ei mitään) antaa Unicode jouset, tyypin Unicode. Jos pituus on annettu, jouset on täsmälleen niin kauan. Jos maxlen annetaan, merkkijonon pituus on korkeintaan maxlen merkkiä.
- Nimi () antaa nimet, Unicode. Nämä vaihtelevat proosallinen, kuten "John Smith", eksoottinen - nimiä, jotka sisältävät kiinteän välilyönnin tai sähköpostiosoitteita tai Unicode ulkopuolella Basic Multilingual Plane. Tämä on, jos mitään, vähemmän vääristyneitä kuin nimet näet riittävän suuri joukko Internet tietoa.
- NameUtf8 () on sama kuin nimi (). Koodata ('UTF-8').
- FromList (eriä) palauttaa satunnaisen kohteita luettelosta. Tämä on tarpeen lähinnä luoda omia mielivaltaisia ​​datageneraattorin toimintoja.
- Randstr (pituus = None, maxlen = sys.maxint) antaa jouset satunnainen tavua. Jos pituus on annettu, jouset on täsmälleen niin kauan. Jos maxlen annetaan, merkkijonon pituus on korkeintaan maxlen tavua.
Jouset tuottama str ja unicode ovat satunnaistettuja, mutta jonkin verran vaivaa on otettu tehdä niistä riittävän kieroutunut paljastamiseksi bugeja paljon merkkijonon käsittely koodin. Nimilista perustuu löyhästi kamala muistoja näkemään nimi koodimerkkejä crash reaalimaailman data, uudestaan ​​ja uudestaan ​​ja uudestaan, kun kävi yhä selvemmäksi, että maailma on hullu, ja olemme todella tuomittu. (Tämä tunne kulkee kun saat tarpeeksi testin kattavuus ja asiat lopulta lopettaa kaatuu. Toivoa on!)
Nimi ja merkkijono esimerkiksi tietoja qc.arbitrary voi olla mielenkiintoista lähteenä enemmän deteministic koetinkivi tiedot. Voit vapaasti lainata mitään siitä. Sisäosat ovat taikaa, mutta maaginen sisäosat, mielenkiintoisimpia ovat qc.arbitrary ja QC.

Vaatimukset :

  • Python

Vastaavia ohjelmistoja

prego
prego

20 Feb 15

databene benerator
databene benerator

14 Apr 15

matchmaker
matchmaker

14 Apr 15

Kommentit qc

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!