Advanced property-based (QuickCheck-like) testing for Python
Python Jupyter Notebook Other
Switch branches/tags
Latest commit ca422e2 Jan 4, 2018 @alexwlchan alexwlchan Merge pull request #1055 from HypothesisWorks/DRMacIver/print-setting…
…s-members

Add :members: directive to autoclass for PrintSettings
Permalink
Failed to load latest commit information.
docs Merge pull request #1055 from HypothesisWorks/DRMacIver/print-setting… Jan 4, 2018
examples Update copyright headers Jan 1, 2018
guides Improve wording, suggest nocover for new tests Dec 19, 2017
notebooks Final table Jun 27, 2015
requirements Update pytest-xdist from 1.20.1 to 1.21.0 Jan 3, 2018
scripts Revert the change to basic-test.sh Jan 2, 2018
src/hypothesis Bump version to 3.44.7 and update changelog Jan 4, 2018
tests Merge pull request #1046 from HypothesisWorks/DRMacIver/discard Jan 2, 2018
.coveragerc Revert "Factor out common suppress tracing logic" Sep 19, 2017
.gitattributes Support for Windows development using Vagrant May 15, 2016
.gitignore Final cleanup for PR #779 Aug 17, 2017
.isort.cfg Configure isort with known third parties May 30, 2017
.pyup.yml Remove benchmarks Dec 20, 2017
.travis.yml Merge pull request #1053 from HypothesisWorks/pyup-scheduled-update-0… Jan 3, 2018
CITATION Update more to new repo link May 3, 2016
CONTRIBUTING.rst Fix an email address link Dec 28, 2017
LICENSE.txt Add pretty printer vendor Mar 6, 2016
Makefile Merge pull request #1053 from HypothesisWorks/pyup-scheduled-update-0… Jan 3, 2018
README.rst Update README.rst Nov 26, 2016
Vagrantfile Support for Windows development using Vagrant May 15, 2016
appveyor.yml Turn off 32-bit builds in appveyor for now Aug 18, 2017
circle.yml Cut out the intermediary Dec 10, 2017
secrets.tar.enc Update secrets to use HypothesisBot Aug 25, 2017
setup.py Use setuptools directly, not imported names Jan 2, 2018
tox.ini Merge pull request #1053 from HypothesisWorks/pyup-scheduled-update-0… Jan 3, 2018

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.