Advanced property-based (QuickCheck-like) testing for Python
Python Jupyter Notebook Other
Switch branches/tags
Latest commit 2304814 Jun 19, 2017 @DRMacIver DRMacIver committed on GitHub Merge pull request #699 from HypothesisWorks/DRMacIver/fix-wheel-buil…
…ding

Fix wheel building
Permalink
Failed to load latest commit information.
benchmark-data Update benchmark data Jun 18, 2017
docs Version bump and update changelog Jun 19, 2017
examples Formatting files that were previously untracked Apr 23, 2017
guides Fix too long title underline May 15, 2017
notebooks Final table Jun 27, 2015
requirements Update flaky from 3.3.0 to 3.4.0 Jun 15, 2017
scripts Add documentation to lower_bound Jun 18, 2017
src/hypothesis Version bump and update changelog Jun 19, 2017
tests Format Jun 18, 2017
.coveragerc Raise an error when minimal times out Apr 26, 2017
.gitattributes Support for Windows development using Vagrant May 15, 2016
.gitignore Try putting all secrets in one file? Apr 21, 2017
.isort.cfg Configure isort with known third parties May 30, 2017
.pyup.yml It helps to commit the requirements file Apr 19, 2017
.travis.yml Add a build check that requirements.txt files are up-to-date May 30, 2017
CITATION Update more to new repo link May 3, 2016
CONTRIBUTING.rst Modify CONTRIBUTING.rst May 30, 2017
LICENSE.txt Add pretty printer vendor Mar 6, 2016
Makefile Add a build check that requirements.txt files are up-to-date May 30, 2017
README.rst Update README.rst Nov 26, 2016
Vagrantfile Support for Windows development using Vagrant May 15, 2016
appveyor.yml Apparently CMD_IN_ENV doesn't work in powershell Jun 19, 2017
circle.yml Move OSX builds over to CircleCI Feb 19, 2017
secrets.tar.enc Another attempt at updating secrets May 20, 2017
setup.cfg Empty setup.cfg for completionism Oct 26, 2015
setup.py Add extra.timezones() strategy May 23, 2017
tox.ini Rationalize which version of Python 3 we use Apr 11, 2017

README.rst

Hypothesis

Hypothesis is an advanced testing library for Python. It lets you write tests which are parametrized by a source of examples, and then generates simple and comprehensible examples that make your tests fail. This lets you find more bugs in your code with less work.

e.g.

@given(st.lists(
  st.floats(allow_nan=False, allow_infinity=False), min_size=1))
def test_mean(xs):
    assert min(xs) <= mean(xs) <= max(xs)
Falsifying example: test_mean(
  xs=[1.7976321109618856e+308, 6.102390043022755e+303]
)

Hypothesis is extremely practical and advances the state of the art of unit testing by some way. It's easy to use, stable, and powerful. If you're not using Hypothesis to test your project then you're missing out.

Quick Start/Installation

If you just want to get started:

pip install hypothesis

Links of interest

The main Hypothesis site is at hypothesis.works, and contains a lot of good introductory and explanatory material.

Extensive documentation and examples of usage are available at readthedocs.

If you want to talk to people about using Hypothesis, we have both an IRC channel and a mailing list.

If you want to receive occasional updates about Hypothesis, including useful tips and tricks, there's a TinyLetter mailing list to sign up for them.

If you want to contribute to Hypothesis, instructions are here.

If you want to hear from people who are already using Hypothesis, some of them have written about it.

If you want to create a downstream package of Hypothesis, please read these guidelines for packagers.