aboutsummaryrefslogtreecommitdiff
path: root/absl/testing/tests/parameterized_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'absl/testing/tests/parameterized_test.py')
-rwxr-xr-xabsl/testing/tests/parameterized_test.py134
1 files changed, 47 insertions, 87 deletions
diff --git a/absl/testing/tests/parameterized_test.py b/absl/testing/tests/parameterized_test.py
index 85f8e9b..5f2dcc0 100755
--- a/absl/testing/tests/parameterized_test.py
+++ b/absl/testing/tests/parameterized_test.py
@@ -336,23 +336,10 @@ class ParameterizedTestsTest(absltest.TestCase):
class UniqueDescriptiveNamesTest(parameterized.TestCase):
- class JustBeingMean(object):
-
- def __repr__(self):
- return '13) (2'
-
@parameterized.parameters(13, 13)
def test_normal(self, number):
del number
- @parameterized.parameters(13, 13, JustBeingMean())
- def test_double_conflict(self, number):
- del number
-
- @parameterized.parameters(13, JustBeingMean(), 13, 13)
- def test_triple_conflict(self, number):
- del number
-
class MultiGeneratorsTestCase(parameterized.TestCase):
@parameterized.parameters((i for i in (1, 2, 3)), (i for i in (3, 2, 1)))
@@ -442,11 +429,13 @@ class ParameterizedTestsTest(absltest.TestCase):
def test_short_description(self):
ts = unittest.makeSuite(self.GoodAdditionParams)
- short_desc = list(ts)[0].shortDescription().split('\n')
- self.assertEqual(
- 'test_addition(1, 2, 3)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_addition(1, 2, 3)'))
+ short_desc = list(ts)[0].shortDescription()
+
+ location = unittest.util.strclass(self.GoodAdditionParams).replace(
+ '__main__.', '')
+ expected = ('{}.test_addition0 (1, 2, 3)\n'.format(location) +
+ 'test_addition(1, 2, 3)')
+ self.assertEqual(expected, short_desc)
def test_short_description_addresses_removed(self):
ts = unittest.makeSuite(self.ArgumentsWithAddresses)
@@ -461,14 +450,22 @@ class ParameterizedTestsTest(absltest.TestCase):
ts = unittest.makeSuite(self.ArgumentsWithAddresses)
self.assertEqual(
(unittest.util.strclass(self.ArgumentsWithAddresses) +
- '.test_something(<object>)'),
+ '.test_something0 (<object>)'),
list(ts)[0].id())
ts = unittest.makeSuite(self.GoodAdditionParams)
self.assertEqual(
(unittest.util.strclass(self.GoodAdditionParams) +
- '.test_addition(1, 2, 3)'),
+ '.test_addition0 (1, 2, 3)'),
list(ts)[0].id())
+ def test_str(self):
+ ts = unittest.makeSuite(self.GoodAdditionParams)
+ test = list(ts)[0]
+
+ expected = 'test_addition0 (1, 2, 3) ({})'.format(
+ unittest.util.strclass(self.GoodAdditionParams))
+ self.assertEqual(expected, str(test))
+
def test_dict_parameters(self):
ts = unittest.makeSuite(self.DictionaryArguments)
res = unittest.TestResult()
@@ -481,24 +478,21 @@ class ParameterizedTestsTest(absltest.TestCase):
self.assertEqual(4, ts.countTestCases())
short_descs = [x.shortDescription() for x in list(ts)]
full_class_name = unittest.util.strclass(self.NoParameterizedTests)
+ full_class_name = full_class_name.replace('__main__.', '')
self.assertSameElements(
[
- 'testGenerator (%s)' % (full_class_name,),
- 'test_generator (%s)' % (full_class_name,),
- 'testNormal (%s)' % (full_class_name,),
- 'test_normal (%s)' % (full_class_name,),
+ '{}.testGenerator'.format(full_class_name),
+ '{}.test_generator'.format(full_class_name),
+ '{}.testNormal'.format(full_class_name),
+ '{}.test_normal'.format(full_class_name),
],
short_descs)
- def test_generator_tests(self):
- with self.assertRaises(AssertionError):
-
- # This fails because the generated test methods share the same test id.
- class GeneratorTests(parameterized.TestCase):
+ def test_generator_tests_disallowed(self):
+ with self.assertRaisesRegex(RuntimeError, 'generated.*without'):
+ class GeneratorTests(parameterized.TestCase): # pylint: disable=unused-variable
test_generator_method = (lambda self: None for _ in range(10))
- del GeneratorTests
-
def test_named_parameters_run(self):
ts = unittest.makeSuite(self.NamedTests)
self.assertEqual(9, ts.countTestCases())
@@ -576,47 +570,20 @@ class ParameterizedTestsTest(absltest.TestCase):
def test_named_parameters_short_description(self):
ts = sorted(unittest.makeSuite(self.NamedTests),
key=lambda t: t.id())
- short_desc = ts[0].shortDescription().split('\n')
- self.assertEqual(
- 'test_dict_single_interesting(case=0)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_dict_single_interesting'))
-
- short_desc = ts[1].shortDescription().split('\n')
- self.assertEqual(
- 'test_dict_something_boring(case=1)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_dict_something_boring'))
-
- short_desc = ts[2].shortDescription().split('\n')
- self.assertEqual(
- 'test_dict_something_interesting(case=0)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_dict_something_interesting'))
-
- short_desc = ts[3].shortDescription().split('\n')
- self.assertEqual(
- 'test_mixed_something_boring(1)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_mixed_something_boring'))
-
- short_desc = ts[4].shortDescription().split('\n')
- self.assertEqual(
- 'test_mixed_something_interesting(case=0)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_mixed_something_interesting'))
-
- short_desc = ts[6].shortDescription().split('\n')
- self.assertEqual(
- 'test_something_boring(1)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_something_boring'))
-
- short_desc = ts[7].shortDescription().split('\n')
- self.assertEqual(
- 'test_something_interesting(0)', short_desc[1])
- self.assertTrue(
- short_desc[0].startswith('test_something_interesting'))
+ actual = {t._testMethodName: t.shortDescription() for t in ts}
+ expected = {
+ 'test_dict_single_interesting': 'case=0',
+ 'test_dict_something_boring': 'case=1',
+ 'test_dict_something_interesting': 'case=0',
+ 'test_mixed_something_boring': '1',
+ 'test_mixed_something_interesting': 'case=0',
+ 'test_something_boring': '1',
+ 'test_something_interesting': '0',
+ }
+ for test_name, param_repr in expected.items():
+ short_desc = actual[test_name].split('\n')
+ self.assertIn(test_name, short_desc[0])
+ self.assertEqual('{}({})'.format(test_name, param_repr), short_desc[1])
def test_load_tuple_named_test(self):
loader = unittest.TestLoader()
@@ -861,19 +828,12 @@ class ParameterizedTestsTest(absltest.TestCase):
res = RecordSuccessTestsResult()
ts.run(res)
self.assertTrue(res.wasSuccessful())
- self.assertEqual(9, res.testsRun)
+ self.assertEqual(2, res.testsRun)
test_ids = [test.id() for test in res.successful_tests]
full_class_name = unittest.util.strclass(self.UniqueDescriptiveNamesTest)
expected_test_ids = [
- full_class_name + '.test_normal(13)',
- full_class_name + '.test_normal(13) (2)',
- full_class_name + '.test_double_conflict(13)',
- full_class_name + '.test_double_conflict(13) (2)',
- full_class_name + '.test_double_conflict(13) (2) (2)',
- full_class_name + '.test_triple_conflict(13)',
- full_class_name + '.test_triple_conflict(13) (2)',
- full_class_name + '.test_triple_conflict(13) (2) (2)',
- full_class_name + '.test_triple_conflict(13) (3)',
+ full_class_name + '.test_normal0 (13)',
+ full_class_name + '.test_normal1 (13)',
]
self.assertTrue(test_ids)
self.assertItemsEqual(expected_test_ids, test_ids)
@@ -892,13 +852,13 @@ class ParameterizedTestsTest(absltest.TestCase):
self.assertEqual(8, res.testsRun)
self.assertTrue(res.wasSuccessful(), msg=str(res.failures))
- def test_subclass_inherits_superclass_test_method_ids(self):
+ def test_subclass_inherits_superclass_test_params_reprs(self):
self.assertEqual(
- {'test_name0': "test_name('foo')", 'test_name1': "test_name('bar')"},
- self.SuperclassTestCase._test_method_ids)
+ {'test_name0': "('foo')", 'test_name1': "('bar')"},
+ self.SuperclassTestCase._test_params_reprs)
self.assertEqual(
- {'test_name0': "test_name('foo')", 'test_name1': "test_name('bar')"},
- self.SubclassTestCase._test_method_ids)
+ {'test_name0': "('foo')", 'test_name1': "('bar')"},
+ self.SubclassTestCase._test_params_reprs)
def _decorate_with_side_effects(func, self):