fault-localization
fault-localization copied to clipboard
A fault localization tool for Python's pytest testing framework
fault-localization
What is this good for?
Not all failing code raises exceptions; behavioral bugs can be the hardest to diagnose.
fault-localization is a pytest plugin that helps you identify and isolate the lines of code most
likely to be causing test failure, using the simple rule-of-thumb that the most suspicious code is the
code run most often in failing tests. Don't just rely on your tests to catch bugs - use them to pinpoint bugs.
Installation
pip install fault-localization
Usage
With fault-localization installed, running
pytest --localize {dir} [--n-hotspots {n}] [pytest args ...]
will highlight suspicious lines encountered within dir while running the test configuration specified.
--n-hotspots can optionally be provided to show the top n most suspicious lines (only one line, with surrounding context,
is shown by default).
If you suspect multiple sources of failure, or if there are multiple tests within your suite that
exercise the area of code you're interested in, using pytest's -k flag is useful for running
fault localization on only a subset of your suite.
Fault localization, as a technique, works best when areas of your codebase are exercised repeatedly
across a bevy of differing cases and values. That's why fault-localization works with Python's premiere
property-based testing framework, Hypothesis, out of the box - which does
just that.
Contacts
- Name: H. Chase Stevens
- Twitter: @hchasestevens