pytest-check
A pytest plugin that allows multiple failures per test.
This pytest plugin was a rewrite and a rename of pytest-expect.
Installation
Note: Requires pytest 6.0 or above.
From PPI:
$ pip install pytest-check
Or from github.
$ pip install git+https://github.com/okken/pytest-check
Usage
Example using import:
import pytest_check as check
def test_example():
a = 1
b = 2
c = [2, 4, 6]
check.greater(a, b)
check.less_equal(b, a)
check.is_in(a, c, "Is 1 in the list")
check.is_not_in(b, c, "make sure 2 isn't in list")
Test results:
=================================== FAILURES ===================================
_________________________________ test_example _________________________________
FAILURE:
assert 1 > 2
test_check.py, line 14, in test_example() -> check.greater(a, b)
FAILURE:
assert 2 <= 1
test_check.py, line 15, in test_example() -> check.less_equal(b, a)
FAILURE: Is 1 in the list
assert 1 in [2, 4, 6]
test_check.py, line 16, in test_example() -> check.is_in(a, c, "Is 1 in the list")
FAILURE: make sure 2 isn't in list
assert 2 not in [2, 4, 6]
test_check.py, line 17, in test_example() -> check.is_not_in(b, c, "make sure 2 isn't in list")
------------------------------------------------------------
Failed Checks: 4
=========================== 1 failed in 0.11 seconds ===========================
Example using fixture:
def test_example(check):
a = 1
b = 2
c = [2, 4, 6]
check.greater(a, b)
check.less_equal(b, a)
check.is_in(a, c, "Is 1 in the list")
check.is_not_in(b, c, "make sure 2 isn't in list")
validation functions
- check.equal - a == b
- check.not_equal - a != b
- check.is_ - a is b
- check.is_not - a is not b
- check.is_true - bool(x) is True
- check.is_false - bool(x) is False
- check.is_none - x is None
- check.is_not_none - x is not None
- check.is_in - a in b
- check.is_not_in - a not in b
- check.is_instance - isinstance(a, b)
- check.is_not_instance - not isinstance(a, b)
- check.almost_equal - a == pytest.approx(b, rel, abs) see at: pytest.approx
- check.not_almost_equal - a != pytest.approx(b, rel, abs) see at: pytest.approx
- check.greater - a > b
- check.greater_equal - a >= b
- check.less - a < b
- check.less_equal - a <= b
Defining your own check functions
The @check_func decorator allows you to wrap any test helper that has an assert
statement in it to be a non-blocking assert function.
from pytest_check import check_func
@check_func
def is_four(a):
assert a == 4
def test_all_four():
is_four(1)
is_four(2)
is_four(3)
is_four(4)
The above will result in:
...
________________________________ test_all_four _________________________________
FAILURE: assert 1 == 4
test_fail.py, line 8, in test_all_four() -> is_four(1)
FAILURE: assert 2 == 4
test_fail.py, line 9, in test_all_four() -> is_four(2)
FAILURE: assert 3 == 4
test_fail.py, line 10, in test_all_four() -> is_four(3)
------------------------------------------------------------
Failed Checks: 3
=========================== 1 failed in 0.12 seconds ===========================
Using check as a context manager
You can use the check() context manager to wrap any assert that you want to continue after in a test.
from pytest_check import check
def test_context_manager():
with check:
x = 3
assert 1 < x < 4
Within any with check:, however, you still won't get past the assert statement,
so you will need to use multiple with check: blocks for multiple asserts:
def test_multiple_failures():
with check: assert 1 == 0
with check: assert 1 > 2
with check: assert 1 < 5 < 4
Contributing
Contributions are very welcome. Tests can be run with tox. Test coverage is now 100%. Please make sure to keep it at 100%. If you have an awesome pull request and need help with getting coverage back up, let me know.
License
Distributed under the terms of the MIT license, "pytest-check" is free and open source software
Issues
If you encounter any problems, please file an issue along with a detailed description.
Changelog
- 1.0.1
- Remove Beta Classifier
- Status is now "Development Status :: 5 - Production/Stable"
- 1.0.0
- Jump to 1.0 version, API is fairly stable.
- 0.4.1
- Fix #43/#44 tests with failing checks and failing asserts now report all issues.
- 0.4.0
- added
is_()andis_not() - Requires pytest 6.0 or above. (Removed some cruft to support pytest 5.x)
- added
Release files for pytest-check 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_check-1.0.2.tar.gz | 8.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytest_check-1.0.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 14.3 kB
Release files / pytest_check-1.0.2.tar.gz
| Download URL | pytest_check-1.0.2.tar.gz |
|---|---|
| Size | 8.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
20588fcc871a0c9342b4876d5414f3dcfc8f1c4e0f176a84823d05726847422f
|
|
BLAKE2b-256 checksum How to use checksums |
a7f28d9fe6bf6fdbf04a49c7c991ad59de81426a0b0216c922ca486e41c8e6a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.25.1
|
Release files / pytest_check-1.0.2-py2.py3-none-any.whl
| Download URL | pytest_check-1.0.2-py2.py3-none-any.whl |
|---|---|
| Size | 6.2 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
c9653d6985fee8f98721ca1791bda6b02698cb691f2aeec249cdd1c451ed7efe
|
|
BLAKE2b-256 checksum How to use checksums |
906fac51c9e7d20af756a15668ba61fbe13ef85597f2366965e741e842c2dec3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.25.1
|