Source code for eztable.table_test_mixin

[docs]class TableTestMixin(object): """Mix this class into any unit test test-cases in order to add methods for asserting equality on eztable.Table objects. Typically the class definition for a unittest will look something like this:: class ExampleTestCase(TableTestMixin, unittest.TestCase): ... """ def __validate_table_structures(self, A, B): self.assertEquals( A.column_names, B.column_names, "Column names are different") self.assertEquals( A.column_types, B.column_types, "Column types are different") if len(A) != len(B): raise AssertionError( "Table lengths are different: %i != %i" % (len(A), len(B)) )
[docs] def assertTablesEqual(self, A, B, msg=None): """Verfy that two tables are exactly equal. Raises an AssertionError if not. """ self.__validate_table_structures(A, B) for i, (a, b) in enumerate(zip(A, B)): if not a == b: brokenA = A[i:i + 1] brokenB = B[i:i + 1] _msg = 'Differences at row %i\n\n%r\n\n%s' % ( i, brokenA, brokenB ) raise AssertionError(_msg)
[docs] def assertTablesEqualAnyOrder(self, A, B, msg=None): """Verify that two tables contain the exact same set of rows. Rows may be in any order. Raises an AssertionError the sets of rows are different. """ self.__validate_table_structures(A, B) rows_a = set(A) rows_b = set(B) self.assertEqual(rows_a, rows_b)
[docs] def assertTablesNotEquals(self, A, B, msg=None): """Verify that two tables are not equal. Raises an AssertionError if the two tables are equal. """ self.assertNotEquals(A, B)
assertTablesEquals = assertTablesEqual