simple-assertions
Assertion library (skeleton) inspired from assertpy but without batteries! also allows to convert all the assertions to warnings, just like delayed asserts.
Motivation
assertpy
is beautiful library but for my needs it's too much, i really loved the API of
assertpy
so i created new module because of following reasons
please check tests/test_*.py
for use cases.
- I wanted
assert_warn
to be dynamic, i.e. given certain condition all assertions are converted to
warning.
- I added
ASSERT_ERROR_AS_WARNING
variable which can do that! - Modified
assert_that
API to make is call based with assert_that(.., as_warn=True)
- Extending is possible but i wanted more intuitive logic
- I exposed the
SimpleAssertions
class, and just inherit it to add new method
assert_that
in assertpy
creates new instance of class and loads all the extensions on every
call, and i wanted to avoid that!
- By exposing the
SimpleAssertion
class, you can just make it part of your assertion class
Note: earlier i used assert_that
keyword from assertpy
but i felt like it's copying from other library
, so i changed assert_that
to check
, while reading this gives same amount of experience but saved 6 chars!
Installation
pip install simple-assertions
Usage
Please check tests
files for more usage here is only basic usage
As Function
Just import the check
function, and away you go...
from simple_assertions import check
def test_something():
check(4 + 10).is_equal_to(14)
check(1).is_instance_of(int)
check(3, "lucky_num", as_warn=True).is_equal_to(4)
As instance
from simple_assertions import SimpleAssertions
class YourTestClass:
def __init__(self):
self.check = SimpleAssertions().check
def test_something(self):
self.check(4 + 10).is_equal_to(14)
self.check(1).is_instance_of(int)
self.check(3, "lucky_num", as_warn=True).is_equal_to(4)
Add your own batteries
from simple_assertions import SimpleAssertions
from typing import Union
class YourAssertions(SimpleAssertions):
def __init__(self, as_warn=False, logger=None):
super().__init__(as_warn, logger)
def is_greater_than(self, other: Union[int, float]):
if self.val_to_chk.val < other:
self.raise_err(self.compare_err_msg(other, "to be greater than"))
return self
class YourTestClass:
def __init__(self):
self.check = YourAssertions().check
def test_something(self):
self.check(4 + 10).is_greater_than(10).is_equal_to(14)
self.check(1).is_instance_of(int)
self.check(3, "lucky_num", as_warn=True).is_equal_to(4)
Though only checked with unittests
but it should work fine with pytest or Nose.