
Product
Introducing Socket Firewall Enterprise: Flexible, Configurable Protection for Modern Package Ecosystems
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.
verify
|version| |travis| |coveralls| |license|
Verify is a painless assertion library for Python.
Install using pip:
::
pip install verify
Verify some value using multiple assertions:
.. code-block:: python
from verify import expect, Not, Truthy, Falsy, Less, Greater
expect(5 * 5,
Truthy(),
Not(Falsy),
Greater(15),
Less(30))
Verify using your own assert functions:
.. code-block:: python
def is_just_right(value):
assert value == 'just right', 'Not just right!'
# Passes
expect('just right', is_just_right)
# Fails
try:
expect('too cold', is_just_right)
except AssertionError:
raise
NOTE: The assert function should return a truthy value, otherwise, expect will treat the falsy return from the function as an indication that it failed and subsequently raise it's own AssertionError.
Verify using your own predicate functions:
.. code-block:: python
def is_awesome(value):
return 'awesome' in value
def is_more_awesome(value):
return value > 'awesome'
expect('so awesome', is_awesome, is_more_awesome)
Verify using chaining syntax:
.. code-block:: python
expect(1).Truthy().Number().NotBoolean().Not(is_awesome)
Verify without expect since the verify assertions can be used on their own:
.. code-block:: python
import verify
# These would pass.
verify.Truthy(1)
verify.Equal(2, 2)
verify.Greater(3, 2)
# These would fail with an AssertionError
verify.Truthy(0)
verify.Equal(2, 3)
verify.Greater(2, 3)
If you'd prefer to see assert being used, all verify assertions will return True if no AssertionError is raised:
.. code-block:: python
assert Truthy(1)
assert expect(1, Truthy(), Number())
There are several syntax styles available to help construct more natural sounding assertion chains.
Use expect with the to_be aliases. All Pascal case assertions have to_be_* and to_not_be_* prefixes (with a few expections).
.. code-block:: python
expect(something).to_be_int().to_be_less_or_equal(5).to_be_greater_or_equal(1)
expect(something_else).to_not_be_float().to_be_number()
Use ensure with is aliases. All Pascal case assertions have is_* and is_not_* prefixes (with a few expections).
.. code-block:: python
ensure(something).is_int().is_less_or_equal(5).is_greater_or_equal(1)
ensure(something_else).is_not_float().is_number()
Use expect or ensure with the Pascal case assertions.
.. code-block:: python
ensure(something).Int().LessOrEqual(5).GreaterOrEqual(1)
expect(something_else).Float().Number()
NOTE: While it's suggested to not mix styles, each of the assertion syntaxes are available with both expect and ensure. So you can call expect(..).is_int() as well as ensure(..).to_be_int().
As mentioned above, there are some assertions that have nonstandard aliases:
Not: not_, does_not, to_fail, and failsPredicate: does, to_pass, and passesAll: all_, does_all, and passes_allNotAll: not_all, does_not_all, and fails_allAny: any_, does_any, and passes_anyNotAny: not_any, does_not_any, and fails_anyMatch: to_match, is_match and matchesNotMatch: to_not_match, is_not_match and does_not_matchIs: to_be and is_Contains: to_contain and containsNotContains: to_not_contain and does_not_containContainsOnly: to_contain_only and contains_onlyNotContainsOnly: to_not_contain_only and does_not_contain_onlyLength: to_have_length and has_lengthNotLength: to_not_have_length and does_not_have_lengthAll of the validators in verify are callables that can be used in two contexts:
Equal(a, b) which will raise an AssertionError if false.expect as in expect(a, Equal(b)) which could also raise an AssertionError.The available validators are:
=================================== ===========
Validator Description
=================================== ===========
Truthy Assert that bool(a).
Falsy Assert that not bool(a).
Not Assert that a callable doesn't raise an AssertionError.
Predicate Assert that predicate(a).
All Assert that all of the list of predicates evaluate a as truthy.
NotAll Assert not All.
Any Assert that any of the list of predicates evaluate a as truthy.
NotAny Assert not Any.
Equal Assert that a == b.
NotEqual Assert not Equal.
Match Assert that a matches regular expression b.
NotMatch Assert not Match.
Is Assert that a is b.
IsNot Assert not Is.
IsTrue Assert that a is True.
IsNotTrue Assert not IsTrue.
IsFalse Assert that a is False.
IsNotFalse Assert not IsFalse.
IsNone Assert that a is None.
IsNotNone Assert not IsNone.
Type Assert that isinstance(a, b).
NotType Assert not Type.
Boolean Assert that isinstance(a, bool).
NotBoolean Assert not Boolean.
String Assert that isinstance(a, (str, unicode)).
NotString Assert not String.
Dict Assert that isinstance(a, dict).
NotDict Assert not Dict.
List Assert that isinstance(a, list).
NotList Assert not List.
Tuple Assert that isinstance(a, tuple).
NotTuple Assert not Tuple.
Date Assert that isinstance(a, datetime.date).
NotDate Assert not Date.
DateString Assert that a matches the datetime format string b.
NotDateString Assert not DateString.
Int Assert that isinstance(a, int).
NotInt Assert not Int.
Float Assert that isinstance(a, float).
NotFloat Assert not Float.
Number Assert that isinstance(a, (int, float, Decimal, long)).
NotNumber Assert not Number.
In Assert that a in b.
NotIn Assert not In.
Contains Assert that b in a.
NotContains Assert not Contains.
ContainsOnly Assert that values from b are the only ones contained in a.
NotContainsOnly Assert not ContainsOnly.
Subset Assert that a is a subset of b.
NotSubset Assert not Subset.
Superset Assert that a is a superset of b.
NotSuperset Assert not Superset.
Unique Assert that a contains unique items.
NotUnique Assert not Unique.
Length Assert that b <= len(a) <= c.
NotLength Assert that not Length.
Greater/GreaterThan Assert that a > b.
GreaterEqual/GreaterOrEqual Assert that a >= b.
Less/LessThan Assert that a < b.
LessEqual/LessOrEqual Assert that a <= b.
Between Assert that b <= a <= c.
NotBetween Assert not Between.
Positive Assert that a > 0.
Negative Assert that a < 0.
Even Assert that a % 2 == 0.
Odd Assert that a % 2 != 1.
Monotone Assert that a is monotonic with respect to b().
Increasing Assert that a is monotonically increasing.
StrictlyIncreasing Assert that a is strictly increasing.
Decreasing Assert that a is monotonically decreasing.
StrictlyDecreasing Assert that a is strictly decreasing.
=================================== ===========
For more details, please see the full documentation at http://verify.readthedocs.org.
.. |version| image:: https://img.shields.io/pypi/v/verify.svg?style=flat-square :target: https://pypi.python.org/pypi/verify/
.. |travis| image:: https://img.shields.io/travis/dgilland/verify/master.svg?style=flat-square :target: https://travis-ci.org/dgilland/verify
.. |coveralls| image:: https://img.shields.io/coveralls/dgilland/verify/master.svg?style=flat-square :target: https://coveralls.io/r/dgilland/verify
.. |license| image:: https://img.shields.io/pypi/l/verify.svg?style=flat-square :target: https://pypi.python.org/pypi/verify/
FAQs
A painless assertion and validation library for Python.
We found that verify demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.

Product
Detect malware, unsafe data flows, and license issues in GitHub Actions with Socket’s new workflow scanning support.