Extends Hypothesis to add fully automatic testing of type annotated functions
Project description
Read Latest Documentation - Browse GitHub Code Repository
hypothesis-auto is an extension for the Hypothesis project that enables fully automatic tests for type annotated functions.
Key Features:
- Type Annotation Powered: Utilize your function's existing type annotations to build dozens of test cases automatically.
- Low Barrier: Start utilizing property-based testing in the lowest barrier way possible. Just run
auto_test(FUNCTION)
to run dozens of test. - py.test Compatible: Built-n compatibility with the popular py.test testing framework. This means that you can turn your automatically generated tests into individual py.test test cases with one line.
- Scales Up: As you find your self needing to customize your auto_test cases, you can easily utilize all the features of Hypothesis, including custom strategies per a parameter.
Installation:
To get started - install hypothesis-auto
into your projects virtual environment:
pip3 install hypothesis-auto
OR
poetry add hypothesis-auto
OR
pipenv install hypothesis-auto
Usage Examples:
Framework independent usage
Basic auto_test
usage:
from hypothesis_auto import auto_test
def add(number_1: int, number_2: int = 1) -> int:
return number_1 + number_2
auto_test(add) # 50 property based scenerios are generated and ran against add
auto_test(add, _auto_runs=1_000) # Let's make that 1,000
Adding an allowed exception:
from hypothesis_auto import auto_test
def divide(number_1: int, number_2: int) -> int:
return number_1 / number_2
auto_test(divide)
-> 1012 raise the_error_hypothesis_found
1013
1014 for attrib in dir(test):
<ipython-input-2-65a3aa66e9f9> in divide(number_1, number_2)
1 def divide(number_1: int, number_2: int) -> int:
----> 2 return number_1 / number_2
3
0/0
ZeroDivisionError: division by zero
auto_test(divide, _auto_allow_exceptions=(ZeroDivisionError, ))
For the full set of parameters, you can pass into auto_test see its API reference documentation.
py.test usage
Using auto_pytest_magic
to auto-generate dozens of py.test test cases:
from hypothesis_auto import auto_pytest_magic
def add(number_1: int, number_2: int = 1) -> int:
return number_1 + number_2
auto_pytest_magic(add)
Using auto_pytest
to run dozens of test case within a temporary directory:
from hypothesis_auto import auto_pytest
def add(number_1: int, number_2: int = 1) -> int:
return number_1 + number_2
@auto_pytest()
def test_add(test_case, tmpdir):
tmpdir.mkdir().chdir()
test_case()
For the full reference of the py.test integration API see the [API reference documentation](https://timothycrosley.github.io/hyp othesis-auto/reference/hypothesis_auto/pytest/).
Why Create hypothesis-auto?
I wanted a no/low resistance way to start incorporating property-based tests across my projects. Such a solution that also encouraged the use of type hints was a win/win for me.
I hope you too find hypothesis-auto
useful!
~Timothy Crosley
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for hypothesis_auto-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d19849bfe75398e1fd1bc446806248ae591f87d08899a1cfd7ae4f6e8a11cfa1 |
|
MD5 | af8310ddc340a18386608837becfa969 |
|
BLAKE2b-256 | 4225b88a036a768d9d214313b42f8267f35050c1eb5e744d8e9394b366ab897f |