The following presentation focuses on the Property Based Testing using Python framework Hypothesis.
- Aniket Maithani
§ Property-based tests make statements about the
output of your code based on the input, and these
statements are verified for many different possible
§ A property-based testing framework runs the same
test over and over with generated input
§ The main efficiency parameter of a property testing
algorithm is its query complexity, which is the
maximum number of input symbols inspected over
all inputs of a given length (and all random choices
made by the algorithm)
§ Define a function which we want to
write test for :
§ Write down the test function
§ Write down exact inputs
§ Write down the expected result(s)
§ Run the test and checks if assertion
matches or not
§ You may miss the boundary/edge cases!
§ Writing code for test(s) becomes complex and time consuming as your underlying
§ Maintaining tests in itself becomes a task : and that’s why most of the devs don’t like
to write test cases!! [SAD BUT TRUE]
§ Writing random, unbiased
examples is hard...
§ YOU DEFINE THE INPUTS
§ DEFINE EXPECTED RESULTS
§ LET THE FRAMEWORK DO THE REST OF
§ SOUNDS IMPOSSIBLE??? LET’S HAVE A
LOOK AT IT
want to write
Sorting a list
§Strategy is a basic building block of test(s) while using
§Hypothesis has built in types : Numbers, Strings,
§One can write their own strategies!
§Write Less Do More!
§ Fake_factory :
§Example Link :
§ Hypothesis creates saved models.
§ This will run inside your testing transaction when
using the test runner.
§ If you use the dev console this will leave debris in
§ How many times will Hypothesis run my test?
§ People generally assume that the number of tests run will depend on the specific
strategies used, but that’s generally not the case. Instead Hypothesis has a fairly
fixed set of heuristics to determine how many times to run, which are mostly
independent of the data being generated.
§ The short answer is 200. Assuming you have a default configuration and everything
is running smoothly, Hypothesis will run your test 200 times.
§ The longer answer is “It’s complicated”. It will depend on the exact behaviour of
your tests and the value of some settings
§ For the passing case there are two other settings that affect the answer:
max_examples and max_iterations.
§ Aniket Maithani
§ Nature Lover, FOSS Enthusiast, Python Programmer
§ Loves to Travel and Make Friends