Skip to main content

Easy-to-use, extensible random testing library.

Project description

pyquchk - random and serial testing

pyquchk (abbreviated from Python QuickCheck) is the most comprehensive and extensible, altrough easy-to-use, random and serial testing framework. As you see from the name, it’s inspired by Haskell QuickCheck, but aims to provide much more capabilities.

Full documentation, including usage examples, is available at pythonhosted.org/pyquchk.

Features

Already implemented

pyquchk combines two approaches to the arguments values generation in a single framework:

  • QuickCheck-like (random)

    Random (fuzzy) testing runs a function for many randomly generated arguments values to make sure it’s generally correct. Some features (both from the original QuickCheck and unique to pyquchk)

  • SmallCheck-like (serial)

    Serial testing means that values are generated starting with some edge cases and small ones. This exhausts all possible values up to some “size” and is deterministic, in contrast to the random approach. Serial testing nicely complements the random one and so gives more confidence that the function tested is correct.

Other notable features include:

  • a lot of configurable built-in generators for different value types (see arbitraries for the list of currently implemented generators)

  • custom generators are supported, both for built-in types and user-created ones

  • easy-to-write and read syntax for simple property checking as well as for full tests to be run with a framework (nose or py.test for example)

  • pyquchk attempts to give you the smallest available counterexample, always performing shrinkg of the generated value (and if a value is found with serial testing, it’s probably already minimal)

  • assume function (allows so-called conditional properties and much more)

  • Easy creation of Arbitraries combinations

    Examples: string from list; tuple with equally-sized strings.

Planned

pyquchk is in active development, and I have many features to implement here:

  • Option to check for exists, not for_all

  • Tests timing

    Show time spent in pyquchk code and in tested function

  • Support generators arguments depending on other generators values

    Something like forAll in original QuickCheck, but everything is to be defined as the function default arguments. Example: integer from the range [0:len(list)].

  • Size support

    Generation function takes size parameter which increases (from 0 to 1?) from the first to the last test. Explore sized, resize and so on from QuickCheck - whether they will fit here.

  • Look for best way to express:

    • Modifiers like positive/negative/nonempty/…

    • Different numbers distributions like uniform/exponential/…

    • Structures like def f(a={int: [str_(...)]}, b=[float], c={'x': int, 'y': list})

  • Any use for Python 3 annotations?

  • Better testing pyquchk itself

  • Smart shrink from QuickCheck, SmartCheck

  • Collect, classify, cover

    Not only boolean parameters (label/no label), but numerical as well. Example: difference between approximate function result and the exact one.

  • Verbosity settings

  • Print seed and allow to change it

  • Don’t fail fast

  • Add timeout

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyquchk-0.5.3.tar.gz (14.7 kB view details)

Uploaded Source

Built Distributions

pyquchk-0.5.3-py3.3.egg (46.5 kB view details)

Uploaded Source

pyquchk-0.5.3-py2.7.egg (43.9 kB view details)

Uploaded Source

File details

Details for the file pyquchk-0.5.3.tar.gz.

File metadata

  • Download URL: pyquchk-0.5.3.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyquchk-0.5.3.tar.gz
Algorithm Hash digest
SHA256 0ae3fe9ed088de8cf6d3d43f2ee56196eb27fe4ba8e72d8a11367a362915eaa9
MD5 66efda0ef442e8fd5109ff6d16735269
BLAKE2b-256 fd046460d2eb38174f5e1470ed157932a951606ede87f81829ee6a98ce8de59a

See more details on using hashes here.

File details

Details for the file pyquchk-0.5.3-py3.3.egg.

File metadata

  • Download URL: pyquchk-0.5.3-py3.3.egg
  • Upload date:
  • Size: 46.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyquchk-0.5.3-py3.3.egg
Algorithm Hash digest
SHA256 9e9bc268b2ab37cf3a8c1f4bc8d7316c43f92a726cd989b6785711af7cc07d0c
MD5 65880ef80ce4fe2906a7ef0cc952d330
BLAKE2b-256 dd490f15c8d986747f1eaab1f3c7c8669fd25e354e60071a047b1248c459e261

See more details on using hashes here.

File details

Details for the file pyquchk-0.5.3-py2.7.egg.

File metadata

  • Download URL: pyquchk-0.5.3-py2.7.egg
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyquchk-0.5.3-py2.7.egg
Algorithm Hash digest
SHA256 5922c70cf170652c64febaacacb7f8ace5a58b129e154cb0748e9106467c9011
MD5 2f05f84be52abc96572f4881cdffb8ba
BLAKE2b-256 73baa21c974fbf791dead19f1fb870e03252b64321da16d6a34d39bdc9d03eee

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page