Health checks

Hypothesis tries to detect common mistakes and things that will cause difficulty at run time in the form of a number of ‘health checks’.

These include detecting and warning about:

  • Strategies with very slow data generation
  • Strategies which filter out too much
  • Recursive strategies which branch too much
  • Tests that are unlikely to complete in a reasonable amount of time.

If any of these scenarios are detected, Hypothesis will emit a warning about them.

The general goal of these health checks is to warn you about things that you are doing that might appear to work but will either cause Hypothesis to not work correctly or to perform badly.

To selectively disable health checks, use the suppress_health_check setting. The argument for this parameter is a list with elements drawn from any of the class-level attributes of the HealthCheck class.

To disable all health checks, set the perform_health_check to False.

class hypothesis.HealthCheck[source]

Arguments for suppress_health_check.

Each member of this enum is a type of health check to suppress.

exception_in_generation = 0

Deprecated and no longer does anything. It used to convert errors in data generation into FailedHealthCheck error.

data_too_large = 1

Check for when the typical size of the examples you are generating exceeds the maximum allowed size too often.

filter_too_much = 2

Check for when the test is filtering out too many examples, either through use of assume() or filter(), or occasionally for Hypothesis internal reasons.

too_slow = 3

Check for when your data generation is extremely slow and likely to hurt testing.

random_module = 4

Deprecated and no longer does anything. It used to check for whether your tests used the global random module. Now @given tests automatically seed random so this is no longer an error.

return_value = 5

Checks if your tests return a non-None value (which will be ignored and is unlikely to do what you want).

hung_test = 6

Checks if your tests have been running for a very long time.

large_base_example = 7

Checks if the natural example to shrink towards is very large.

not_a_test_method = 8

Checks if @given has been applied to a method of unittest.TestCase.