The unittest module has some lovely enhanced comparison operations, but they're currently hard to access outside a test run.
It would be rather convenient if they were split out into a separate base class so they could be used directly without needing to create an actual test case.
Possible API:
class Assertions:
# All the enhanced assertion machinery goes here
# Nothing related to actually running test cases
class TestCase(Assertions):
# This adds support for setUp, tearDown, addCleanup etc, etc
My current workaround is to just define a dummy "runTest" method in a subclass and use that:
>>> class Assertions(unittest.TestCase):
... def runTest(self): pass
...
>>> check = Assertions()
>>> check.assertEqual([], ())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/unittest/case.py", line 511, in assertEqual
assertion_func(first, second, msg=msg)
File "/usr/lib64/python2.7/unittest/case.py", line 504, in _baseAssertEqual
raise self.failureException(msg)
AssertionError: [] != ()
>>> check.assertEqual([1], [2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/unittest/case.py", line 511, in assertEqual
assertion_func(first, second, msg=msg)
File "/usr/lib64/python2.7/unittest/case.py", line 740, in assertListEqual
self.assertSequenceEqual(list1, list2, msg, seq_type=list)
File "/usr/lib64/python2.7/unittest/case.py", line 722, in assertSequenceEqual
self.fail(msg)
File "/usr/lib64/python2.7/unittest/case.py", line 408, in fail
raise self.failureException(msg)
AssertionError: Lists differ: [1] != [2]
First differing element 0:
1
2
- [1]
+ [2]
|