Python-Delayed-Assert
Delayed aka. Soft asserts for python
Few features:
- No Dependenices on any other framework/library.
- Should work with any testing framework.
- Can be use as decorator or context manager.
Installation
Install via pip
pip install delayed-assert
Install from master
pip install git+https://github.com/pr4bh4sh/delayed-assert
Uses
See example_unittest.py
for usage.
Using assertion library with lambda
Pass the assertion call as
expect(lambda: self.assertListEqual([4,5,6,2,5],[7,8]))
While I've tested only with unittest asserttion,It should be able to use any assertion library.
Keep in mind that, Python does not support statement inside lambda, so
expect(lambda: assert 1 == 1)
won't work as it is not a valid lambda expression in python
Current possible uses
def testSomething(self):
delayed_assert.expect(1 == 1)
delayed_assert.expect(1 == 2)
delayed_assert.expect(3 == 2, "Value don't match")
delayed_assert.expect(3 == 3)
delayed_assert.assert_expectations()
def testLambdas(self):
expect(lambda: self.assertEqual(3,4))
expect(lambda: self.assertListEqual([4,5,6,2,5],[7,8]))
assert_expectations()
@delayed_assert.assert_all()
def testDecorator(self):
expect('five' == 'Six', 'String do not match')
expect([5,2] == [3,4], 'List item do not match')
expect([3,4] == [3,4], 'This message wont be printed')
def testContextManeger(self):
with delayed_assert.assert_all():
expect('four' == 'Six', 'String do not match')
expect([5,2] == [3,4], 'List item do not match')
expect([3,4] == [3,4], 'This message wont be printed')
Credit : http://pythontesting.net/strategy/delayed-assert/