Python assertEqual as top-level function
A regular assert statement could be more verbose:
first = 'a'
second = 'aa'
assert first == second
$ python script.py
Traceback (most recent call last):
File "script.py", line 3, in <module>
assert first == second
AssertionError
Here is a top-level function to test an assertion condition in more detail:
import unittest
def assert_equal(first, second):
class MyTestCase(unittest.TestCase):
def test(self):
self.assertEqual(first, second)
suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
unittest.TextTestRunner().run(suite)
first = 'a'
second = 'aa'
assert_equal(first, second)
$ python script.py
F
======================================================================
FAIL: test (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "script.py", line 7, in test
self.assertEqual(first, second)
AssertionError: 'a' != 'aa'
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
Basic assert in:
first = 'z'
second = ['a', 'b', 'c']
assert first in second
$ python script.py
Traceback (most recent call last):
File "script.py", line 3, in <module>
assert first in second
AssertionError
Improved assert in:
import unittest
def assert_in(first, second):
class MyTestCase(unittest.TestCase):
def test(self):
self.assertIn(first, second)
suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
unittest.TextTestRunner().run(suite)
first = 'z'
second = ['a', 'b', 'c']
assert_in(first, second)
$ python script.py
F
======================================================================
FAIL: test (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "script.py", line 7, in test
self.assertIn(first, second)
AssertionError: 'z' not found in ['a', 'b', 'c']
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
Comments
Leave a Reply