def test_reorder_tests_reverse_with_duplicates(self): class Tests1(unittest.TestCase): def test1(self): pass class Tests2(unittest.TestCase): def test2(self): pass def test3(self): pass suite = self.build_test_suite((Tests1, Tests2)) subsuite = list(suite)[0] suite.addTest(subsuite) tests = list(iter_test_cases(suite)) self.assertTestNames(tests, expected=[ 'Tests1.test1', 'Tests2.test2', 'Tests2.test3', 'Tests1.test1', ]) reordered_tests = reorder_tests(tests, classes=[]) self.assertTestNames(reordered_tests, expected=[ 'Tests1.test1', 'Tests2.test2', 'Tests2.test3', ]) reordered_tests = reorder_tests(tests, classes=[], reverse=True) self.assertTestNames(reordered_tests, expected=[ 'Tests2.test3', 'Tests2.test2', 'Tests1.test1', ])
def test_reorder_tests_random(self): tests = self.make_tests() # Choose a seed that shuffles both the classes and methods. shuffler = Shuffler(seed=9) reordered_tests = reorder_tests(tests, classes=[], shuffler=shuffler) self.assertIsInstance(reordered_tests, collections.abc.Iterator) self.assertTestNames(reordered_tests, expected=[ 'Tests2.test1', 'Tests2.test2', 'Tests1.test2', 'Tests1.test1', ])
def test_reorder_tests_random_mixed_classes(self): tests = self.make_tests() # Move the last item to the front. tests.insert(0, tests.pop()) shuffler = Shuffler(seed=9) self.assertTestNames(tests, expected=[ 'Tests2.test2', 'Tests1.test1', 'Tests1.test2', 'Tests2.test1', ]) reordered_tests = reorder_tests(tests, classes=[], shuffler=shuffler) self.assertTestNames(reordered_tests, expected=[ 'Tests2.test1', 'Tests2.test2', 'Tests1.test2', 'Tests1.test1', ])
def test_reorder_tests_same_type_consecutive(self): """Tests of the same type are made consecutive.""" tests = self.make_tests() # Move the last item to the front. tests.insert(0, tests.pop()) self.assertTestNames(tests, expected=[ 'Tests2.test2', 'Tests1.test1', 'Tests1.test2', 'Tests2.test1', ]) reordered_tests = reorder_tests(tests, classes=[]) self.assertTestNames(reordered_tests, expected=[ 'Tests2.test2', 'Tests2.test1', 'Tests1.test1', 'Tests1.test2', ])