qc

Screenshot der Software:
qc
Softwarebeschreibung:
Version: 0.1
Upload-Datum: 14 Apr 15
Entwickler: Peter Scott
Lizenz: Frei
Popularität: 139

Rating: 4.0/5 (Total Votes: 2)

qc ist ein Test-Tool, das Sie Eigenschaften, die Sie erwarten, um wahr zu halten, und lassen Sie den Computer erzeugen randomisierten Testfälle zu prüfen, ob diese Eigenschaften tatsächlich halten & nbsp schreiben können, z. B. wenn Sie komprimieren geschrieben haben, und Funktionen für dekomprimieren einige Datenkompressionsprogramm, eine offensichtliche Eigenschaft Test ist, dass Komprimieren und Dekomprimieren einer Zeichenfolge Sie wieder die ursprüngliche Zeichenfolge. Hier ist, wie man das zum Ausdruck bringen:
import unittest
Import qc
Klasse TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (Selbst-):
& Nbsp; "" ". Testen Sie, ob die Komprimierung und Dekomprimierung kehrt die Originaldaten" ""
& Nbsp; data = qc.str () # Eine beliebige Zeichenfolge. Die Werte werden randomisiert.
& Nbsp; self.assertEqual (Daten, dekomprimiert (komprimieren (Daten)), repr (Daten))
Das ist ein normaler Test mit eingebautem Unittest Rahmen Pythons (deshalb gibt es so viel Textvorschlag). Alternativ könnte man genau dasselbe mit einem anderen Test-Frameworks wie die minimal ausführliche, sehr angenehm Nase zu tun,. Das @ qc.property Dekorateur läuft die eingerichteten Funktion mehrmals und jedes Mal die Werte von Funktionen wie qc.string () unterschiedlich sind zurückgekehrt. Mit anderen Worten, ist Quickcheck mit so ziemlich jeder Unit-Test-Framework gibt kompatibel; es ist nicht besonders anspruchsvoll.
Funktionen wie qc.str () qc.int (), und so weiter, zu erzeugen willkürliche Werte eines bestimmten Typs. Im obigen Beispiel, wir behaupten, dass die Eigenschaft gilt für alle Zeichenfolgen. Wenn Sie die Tests durchführen, wird Quick randomisierten Saiten zum Testen zu erzeugen.
Sie werden bemerken, dass ich sagte: "randomisierten", nicht "zufällig". Dies ist beabsichtigt. Die Verteilung der Werte wird optimiert, um interessante Werte, wie leere Zeichenfolgen oder Zeichenfolgen mit NUL-Zeichen in der Mitte, oder Strings mit englischem Text beinhalten. In der Regel versucht Quickcheck auf eine gute Mischung aus klugen kniffligen Werte und Zufälligkeit geben. Dies ist im Wesentlichen, was Sie tun würden, wenn Sie musste wirklich gründliche Testfälle mit der Hand zu schreiben, es sei denn, dass Sie nicht haben, um es zu tun. In der Praxis hat der Computer weniger Vorurteile darüber, was vernünftige Daten, so wird es oft Probleme, die nie in den Sinn gekommen wäre, um Testfälle für schreiben. Er weiß nicht, wie man unbewusst vermeiden Sie die Fehler.
Sie sind nicht auf die eingebaute beliebigen Wert Funktionen beschränkt. Sie können sie als Bausteine ​​eigene generieren. Zum Beispiel:
Klasse Point (Objekt):
& Nbsp; def init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
def Punkt ():
& Nbsp; "" "Holen Sie einen beliebigen Punkt." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; zurück Point (x, y)
Anschließend können Sie diese auf beliebige Punktwerte in den Eigenschaften zu generieren. Hier ist eine Nase Stil-Test:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = Punkt ()
& Nbsp; behaupten abs (pt.x) + abs (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Wenn Sie dies ausführen, passiert etwas Magisches: Quickcheck wird versuchen, knifflige Werte für die Variablen x und y in der Point-Klasse zu generieren, zusammen, so dass Sie Punkte wie (0, 0) zu sehen, (1, 1), ( 0, 1), (385.904, 0), aber auch völlig zufällig diejenigen wie (584, -35.809.648). In anderen Worten, anstatt nur Zeichnung Werte x und y aus einem Strom von Zufallszahlen mit etwas heikel Werte darin, Quick tatsächlich versuchen, schwierige Kombinationen von x und y-Koordinaten zu erzeugen.
Funktionen zum Holen beliebige Daten
- Int (niedrig, hoch) gibt ints, zwischen den optionalen Grenzen niedrig und hoch.
- Lang (niedrig, hoch) gibt sehnt, zwischen den optionalen Grenzen niedrig und hoch.
- Schwimmer (niedrig, hoch) gibt Schwimmer, zwischen den optionalen Grenzen niedrig und hoch. Keine Infinities oder NaN-Werte.
& Nbsp; str (Länge = None, maxlen = None) gibt Zeichenfolgen des Typs str. Die Codierung ist UTF-8. Ist length angegeben, werden die Saiten genau so lange. Wenn maxlen gegeben ist, wird der String-Länge höchstens maxlen Zeichen sein.
- Unicode (Länge = None, maxlen = None) bietet Unicode-Strings, der Typ Unicode. Ist length angegeben, werden die Saiten genau so lange. Wenn maxlen gegeben ist, wird der String-Länge höchstens maxlen Zeichen sein.
- Name () gibt Namen, in Unicode. Diese reichen von der prosaischen, wie "John Smith", zu den exotischen - Namen, die geschützte Leerzeichen, oder E-Mail-Adressen oder Unicode-Zeichen außerhalb der Basic Multilingual Plane. Das ist, wenn überhaupt, weniger perverse als die Namen, die Sie in einer ausreichend großen Menge von Internet-Daten zu sehen.
- NameUtf8 () ist die gleiche wie name () kodieren ("UTF-8")..
- FromList (Artikel) gibt zufällige Elemente aus einer Liste. Dies ist vor allem nützlich für die Erstellung eigener beliebige Daten Generatorfunktionen.
- Randstr (Länge = None, maxlen = sys.maxint) gibt Zeichenfolgen von zufälligen Bytes. Ist length angegeben, werden die Saiten genau so lange. Wenn maxlen gegeben ist, wird der String-Länge höchstens maxlen Bytes.
Die von str und unicode produzierte Saiten werden randomisiert, aber einige Mühe in pervers so dass sie ausreichend, um Fehler in einer ganzen Menge von String-Verarbeitung Code frei genommen. Die Namensliste basiert lose auf schreckliche Erinnerungen des Sehens Namen Verarbeitungscode Absturz auf realen Daten, immer und immer und immer wieder, denn es wurde immer klarer, dass die Welt ist verrückt basiert, und wir sind wirklich verdammt. (Dieses Gefühl geht, sobald Sie genug Testabdeckung und die Dinge endlich aufhören Absturz zu bekommen. Es gibt Hoffnung!)
Die Namen und die Zeichenfolge beispielsweise Daten in qc.arbitrary kann interessant als Quelle für mehr deteministic Testfalldaten sein. Zögern Sie nicht, irgendetwas davon zu leihen. Die Einbauten sind Magie, aber der magische Innenteile sind die interessantesten in qc.arbitrary und qc

Anforderungen .

  • Python

Ähnliche Software

pycdep
pycdep

11 May 15

NoseDBReport
NoseDBReport

20 Feb 15

noseOfYeti
noseOfYeti

20 Feb 15

nose-quickunit
nose-quickunit

20 Feb 15

Kommentare zu qc

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!