Skip to main content

A package for performing assertions and providing informative exception messages.

Project description

https://travis-ci.org/nlesc-nano/AssertionLib.svg?branch=master https://readthedocs.org/projects/cat/badge/?version=latest

https://img.shields.io/badge/python-3.6-blue.svg https://img.shields.io/badge/python-3.7-blue.svg https://img.shields.io/badge/python-3.8-blue.svg

AssertionLib 1.0.0

A package for performing assertions and providing informative exception messages.

Installation

AssertionLib has no external dependencies and can be installed as following:

  • PyPi: pip install AssertionLib
  • GitHub: pip install git+https://github.com/nlesc-nano/AssertionLib

Usage

A comprehensive overview of all available assertion methods is provided in the documentation. A few examples of some basic assertion:

>>> from assertionlib import assertion

# Assert the output of specific callables
>>> assertion.eq(5, 5)  # 5 == 5
>>> assertion.lt(5, 6)  # 5 < 6
>>> assertion.gt(6, 5)  # 5 > 6
>>> assertion.isinstance(5, int)
>>> assertion.hasattr(5, '__init__')

# Simply assert a value
>>> assertion(5 == 5)
>>> assertion(isinstance(5, int))

# Perform an assertion which will raise an AssertionError
>>> assertion.eq(5, 6)  # 5 == 6
AssertionError: output = eq(a, b); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5
b: int = 6

A few examples of AssertionErrors raised due to incorrect method signatures:

>>> from assertionlib import assertion

>>> assertion.len(5)
AssertionError: output = len(obj); assert output

exception: TypeError = TypeError("object of type 'int' has no len()")

output: NoneType = None
obj: int = 5

>>> assertion.eq(5, 5, 5, 5)
AssertionError: output = eq(a, b, _a, _b); assert output

exception: TypeError = TypeError('eq expected 2 arguments, got 4')

output: NoneType = None
a: int = 5
b: int = 5
_a: int = 5
_b: int = 5

A demonstration of the exception parameter. Providing an exception type will assert that the provided exception is raised during/before the assertion process:

>>> from assertionlib import assertion

>>> len(5)
TypeError: object of type 'int' has no len()

>>> assertion.len(5, exception=TypeError)  # i.e. len(5) should raise a TypeError
>>> assertion.len([5], exception=TypeError)
AssertionError: output = len(obj); assert output

exception: AssertionError = AssertionError("Failed to raise 'TypeError'")

output: int = 1
obj: list = [5]

Lastly, the output of custom callables can be asserted in one of the following two ways, supplying the callable to AssertionManager.assert_() or creating a custom assertion method and adding it to an instance with AssertionManager.add_to_instance():

>>> from assertionlib import assertion

>>> my_fancy_func(a):
...     return False

# Approach #1, supply to-be asserted callable to assertion.assert_()
>>> assertion.assert_(my_fancy_func, 5)
AssertionError: output = my_fancy_func(a); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5

# Approach #2, permanantly add a new bound method using assertion.add_to_instance()
>>> assertion.add_to_instance(my_fancy_func)
>>> assertion.my_fancy_func(5)
AssertionError: output = my_fancy_func(a); assert output

exception: AssertionError = AssertionError()

output: bool = False
a: int = 5

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for AssertionLib, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size AssertionLib-1.0.0-py3-none-any.whl (28.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size AssertionLib-1.0.0.tar.gz (20.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page