Your test suite is green. falsify checks whether it can fail.
A pytest plugin and command that finds tests which pass for the wrong reason: assertions that are always true, assertions that never run, patches aimed at names that don't exist, and checks that only a comment satisfies.
Buy falsify for $49One payment of $49, plus sales tax where it applies, and every future update. Delivered as a private GitHub repository you're invited to.
What it does
- Assertions that cannot fail
- Flags asserts that are always true: or True, constants and literals, the same expression on both sides of ==, and unittest forms such as assertTrue(1). Values that can be empty are left alone.
- Assertions that never ran
- falsify dead-asserts runs your suite under coverage.py and lists every assert that never executed, reading skips from pytest's own report.
- Patches that patch nothing
- Finds monkeypatch and mock.patch calls aimed at a name that doesn't exist, so the real code was never replaced.
- Checks only a comment satisfies
- falsify comment-guards reruns suspect tests against a copy of your project with comments stripped, and names each one that then fails. Your working tree is never touched.
- Breakage waiting for one line to run
- Lazy imports of names that no longer exist, calls with more arguments than the function takes, and a name used above its own local import.
- Hangs and hidden failures
- Waits with no timeout, await inside a lock, and except blocks that return success.
- Fits your workflow
- pytest --falsify fails the session on a finding. Configure it in pyproject.toml, get text or JSON, and excuse a line only with a written reason.
Try it
pip install "./falsify[coverage]"
falsify check
falsify dead-asserts
pytest --falsify
What you get
falsify 1.0.0: the pytest plugin and the falsify command, with 208 automated tests. Python 3.10 or newer.
A commercial license. Use it and change it in your own projects and your clients' projects. Don't share or resell the source. Read the license.
Every update. New versions land in the same repository; git pull to get them.
How buying works
- Enter your GitHub username. You'll see the account before you pay, so you can check it's yours.
- Pay $49, plus any sales tax shown at checkout, on Stripe's checkout page.
- Accept the invitation GitHub emails you. Signed in as that account, you'll also find it at
github.com/dominares-tools/falsify/invitations. Invitations expire after 7 days; you can get a new one any time. - Clone and install:
git clone https://github.com/dominares-tools/falsify.git pip install ./falsify
Questions
- Do I need GitHub?
- Yes. Access is a read-only invitation to a private repository, sent to the GitHub account you choose.
- Can I get a refund?
- Yes, within 14 days, no questions asked. Access ends when the refund goes through. Refund policy.
- Who takes the payment?
- Stripe. Your purchase is sold through Link, Stripe's checkout service, which also works out sales tax and sends your receipt.
- Something wrong?
- Email josephlinares02@gmail.com. Every buyer of a tool shares its repository, so support happens by email rather than in GitHub issues.