NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2381 most downloaded on PyPI
A pytest plugin that allows multiple failures per test.
Last release 2 months ago
01 Aug 2026
Release timing varies
gaps range from 8 days to 7 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
68 releases · first in 2017
Fix #173: An issue with pytest-reportlog thanks to a suggestion from MV Seotlo
Support Request #122: Feature proposal: Capability to mark checks as xfail
raises(), to accept an xfail reason. A failing check can now produce an xfailed test result, while a passing check does not produce xpass unless the test is already marked with @pytest.mark.xfail.xfail support for check helper functions in the README.One column per quarter.
Allow CheckContextManager to catch any exception, not just AssertionError ( #198 ). Non-assertion exceptions (IndexError, KeyError, AttributeError, et
(typing) Set comparison function types such that None is not allowed
Passing None to comparison functions like greater() , less() , etc. used to raise an exception, which caused a test failure and stopped the test.
None to comparison functions like greater(), less(), etc. used to raise an exception, which caused a test failure and stopped the test.
(typing) Allow mixed int / float arguments in strict mypy for comparison helpers by adding float numeric overloads for greater() , greater_equal() , l
int/float arguments in strict mypy for comparison helpers by adding float numeric overloads for greater(), greater_equal(), less(), and less_equal() in check_functions.py.Add __init__.pyi stub file for IDE intellisense (e.g. VSCode) and static type checkers.
__init__.pyi stub file for IDE intellisense (e.g. VSCode) and static type checkers.py.typed marker so the package is recognized as typed.test_example_import_as.py to validate import pytest_check as check with mypy.import pytest_check as check usage; internal adjustments in check_functions.py.(typing) Allow dynamic helper access on CheckContextManager for static analysis, so patterns like check.equal(...) type-check in fixture-annotated tes
CheckContextManager for static analysis, so patterns like check.equal(...) type-check in fixture-annotated tests._Comparable* protocol comparison signatures to satisfy strict mypy checks.mypy env checks to include examples/.httpx in the mypy env so example type checking works without import ignores.test_example_check_func_decorator.py to import check_func directly for static type checking.test_example_context_manager_type.py to document and validate context-manager fixture typing behavior.tox -e lint,mypy,pytest_earliest,coverage.(docs) Document custom message support ( msg ) in check.raises() .
msg) in check.raises().check.raises().bool values.--check-max-tb=5.check.call_on_fail() section with usage guidance.examples/logging_to_a_file/.test_raises_custom_msg compatible with pytest < 7.3 short-summary output.Support for raises parameter in @pytest.mark.xfail when using check context managers - Fixes #145 - Thanks @shairoth12
raises parameter in @pytest.mark.xfail when using check context managers - Fixes #145 - Thanks @shairoth12__all__ to include 'check' in pytest_check module - Fixes #190 - Thanks @taylermulliganGreater/less_equal support numpy scalars #189 - Thanks @dpinol
raises returns the exception value, so the excpected error message can be verified. - Thanks @shairoth12
raises returns the exception value, so the excpected error message can be verified. - Thanks @shairoth12raises returns the exception value, so the expected error message can be verified. - Thanks @shairoth12raises & any_failures exported from top __init__.py module so that mypy does not complain that they are not explicitly exported. - Thanks @dpinol
### Changed - relative paths in tracebacks - pr #179, thanks @dpinol - add testing of Python 3.14 - in tox.ini, not in ci yet
Fixes a weird corner case where an internal error could be generated by (1) having a session scope fixture fail in teardown and (2) having the last te
Set a minimum pluggy version during type checking. Resolves #176, thanks @d-ryzhykau
Set a minimum pluggy version during type checking. Resolves #176, thanks @d-ryzhykau
Add type hints, remove support for Python 3.8, resolves #163, thanks @mfulgo Fixed
Changed/Added
Added testing for Python 3.13 (and 3.14 locally)
No code changes.
### Added - is_nan() - is_not_nan()
is_nan()is_not_nan()add Python 3.12 testing, ditch 3.7
add Python 3.12 testing, ditch 3.7
Turn help function list into a table with param lists
Documentation Update
Add fail() and between_equal()
Add fail() and between_equal()
between_equal(b, a, c)
between(b, a, c, ge=True, le=True)fail(msg) - indicate test failure, but don't stop testingFix #155 Summaries from 2.2.3 are cool, but don't work with xdist Turn off summaries while xdist is running I hope I'm not seeing a pattern here
Fix #155 Summaries from 2.2.3 are cool, but don't work with xdist Turn off summaries while xdist is running I hope I'm not seeing a pattern here
Fix #153 turn off summaries for pytest < 7.3
Fix #153 turn off summaries for pytest < 7.3
Summaries depend on internals of pytest, which changed in 7.3. May be possible to back port, but the quickest fix is to turn them off for earlier pytest versions (7.0.0 - 7.2.2)
Example: Before 7.3: =========== short test summary info =========== FAILED test_example_simple.py::test_fail Example after 7.3: =========== short test summary info =========== FAILED test_example_simple.py::test_fail - assert 1 == 2
Fix issue #133 : Failure message should show up in summary line
Full Changelog: https://github.com/okken/pytest-check/compare/2.2.2...2.2.3
Fix issue #133 : Failure message should show up in summary line
Full Changelog: https://github.com/okken/pytest-check/compare/2.2.1...2.2.2 Fix issue #137
Full Changelog: https://github.com/okken/pytest-check/compare/2.2.1...2.2.2
Fix issue #137
Increase Python range to include 3.7.0. Thanks EliahKagan
-l or --showlocals shows locals
-l or --showlocals shows locals__tracebackhide__ = True is honored.assert or other exception is involved,
Fix 127 IndexError when running a check in a thread - Thanks fperrin
Include tests and examples in sdist - PR 121
### Added - Publish-to-pypi.yml workflow
README.md - clean up documentation for --check-max-tb. Thanks alblasco.
--check-max-tb. Thanks alblasco.check.call_on_fail(func) - *Experimental*
check.call_on_fail(func) - Experimental
check.set_failure_callback(func).check.set_failure_callback(func) - *Experimental*
check.set_failure_callback(func) - Experimental
print : check.set_failure_callback(print)
-s is used).logging.error : check.set_failure_callback(logging.error)
examples/test_example_logging.py for runnable examplesWith the following change, the default is now pretty darn fast, and most people will not need to modify any settings to get most of the speed improvem
--check-max-tb=<int> - sets the max number of pseudo-traceback reports per test function.
--check-max-report, then the reports stop at that number, with or without tracebacks.acheck.set_max_tb(int) - overrides --check-max-tb for the test function it's called from. Value is reset after one test function.check.set_no_tb and --set-no-tb will be removed in a future release. (probably soon)check.set_no_tb is deprecated.
set_max_tb(0). See discussion below.--check-no-tb is deprecated.
--check-max-tb is more useful, the default for --check-max-tb is 1, which is already pretty fast.
And --check-max-tb=0 has the same effect as --check-no-tb.The default behavior has changed. Since --check-max-tb=1 is the default, the default behavior is now:
--check-max-tb, default is 1)--check-max-report, default is None)Old default behavior was the same except all tracebacks would be reported.
My logic here:
check 1 == 3, is more useful than the traceback.If this logic doesn't hold for you, you can always set --check-max-tb=1000 or some other large number.
Nothing published for this version
Most changes are related to speedup improvements.
--check-no-tb --check-max-report=10 to get super zippy.check.between() added just for funcheck.equal() and other helper functions to not use assert.FAILURE: check 1 < 2 now.
FAILURE: assert 1 < 2, but that's not really true anymore.--check-no-tb - turn off tracebacks--check-max-report - limit reported failures per test function--check-max-fail - limit failures per test functioncheck.set_no_tb() - turn off tracebacks for one test functioncheck.set_max_report() - limit reports for one test functioncheck.set_max_fail() - limit failures for one test functioncheck.between(b, a, c) - check that a < b < cRemove colorama as a dependency, and simplify how we do "red".
Remove colorama as a dependency, and simplify how we do "red".
Change the formatting of context manager checks such that if a msg is included, we see both the message and the assert failure. Previously, the message would replace the assert failure.
Add any_failures(). Thank you @alblasco
any_failures(). Thank you @alblascoWhile using the check fixture, allow check.check as a context manager.
check fixture, allow check.check as a context manager.
check fixture now works as a context manager.with check.check:Allow raises from check object.
raises from check object.
with check.raises(Exception): works.### Changed - README update
Access to check helper functions via import pytest_check as check is deprecated.
check fixture or from pytest_check import check.
check object from either of these methods can be used as either a context manager or to access the check helper functions.import pytest_check as check is deprecated.issue 80 --tb=no should remove tracebacks from xml output
issue 55 a problem with multiple drive letters.
Support check failures not blowing up if called outside of a test.
Handle cases when context is None
Update pyproject.toml to use newer flit
### Added - Add raises
raises### Changed - Require Python >= 3.6 - Remove old Manifest.in file.
Fix #64, modifications to maxfail behavior.
Add excinfo to call object in pytest_runtest_makereport().
excinfo to call object in pytest_runtest_makereport().
Status is now "Development Status :: 5 - Production/Stable"
Jump to 1.0 version, API is fairly stable.
Fix #43/#44 tests with failing checks and failing asserts now report all issues.
Requires pytest 6.0 or above. (Removed some cruft to support pytest 5.x)
is_() and is_not()Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →