test_data_driven.py (2197B)
1 # This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 5 from marionette_harness.marionette_test import ( 6 parameterized, 7 with_parameters, 8 MetaParameterized, 9 MarionetteTestCase, 10 ) 11 12 13 class Parameterizable(object, metaclass=MetaParameterized): 14 pass 15 16 17 class TestDataDriven(MarionetteTestCase): 18 def test_parameterized(self): 19 class Test(Parameterizable): 20 def __init__(self): 21 self.parameters = [] 22 23 @parameterized("1", "thing", named=43) 24 @parameterized("2", "thing2") 25 def test(self, thing, named=None): 26 self.parameters.append((thing, named)) 27 28 self.assertFalse(hasattr(Test, "test")) 29 self.assertTrue(hasattr(Test, "test_1")) 30 self.assertTrue(hasattr(Test, "test_2")) 31 32 test = Test() 33 test.test_1() 34 test.test_2() 35 36 self.assertEqual(test.parameters, [("thing", 43), ("thing2", None)]) 37 38 def test_with_parameters(self): 39 DATA = [("1", ("thing",), {"named": 43}), ("2", ("thing2",), {"named": None})] 40 41 class Test(Parameterizable): 42 def __init__(self): 43 self.parameters = [] 44 45 @with_parameters(DATA) 46 def test(self, thing, named=None): 47 self.parameters.append((thing, named)) 48 49 self.assertFalse(hasattr(Test, "test")) 50 self.assertTrue(hasattr(Test, "test_1")) 51 self.assertTrue(hasattr(Test, "test_2")) 52 53 test = Test() 54 test.test_1() 55 test.test_2() 56 57 self.assertEqual(test.parameters, [("thing", 43), ("thing2", None)]) 58 59 def test_parameterized_same_name_raises_error(self): 60 with self.assertRaises(KeyError): 61 62 class Test(Parameterizable): 63 @parameterized("1", "thing", named=43) 64 @parameterized("1", "thing2") 65 def test(self, thing, named=None): 66 pass 67 68 def test_marionette_test_case_is_parameterizable(self): 69 self.assertTrue(isinstance(MarionetteTestCase, MetaParameterized))