summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py b/testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py
new file mode 100644
index 000000000..8e4ae0d32
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_data_driven.py
@@ -0,0 +1,67 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from marionette_harness.marionette_test import (
+ parameterized,
+ with_parameters,
+ MetaParameterized,
+ MarionetteTestCase
+)
+
+class Parameterizable(object):
+ __metaclass__ = MetaParameterized
+
+class TestDataDriven(MarionetteTestCase):
+ def test_parameterized(self):
+ class Test(Parameterizable):
+ def __init__(self):
+ self.parameters = []
+
+ @parameterized('1', 'thing', named=43)
+ @parameterized('2', 'thing2')
+ def test(self, thing, named=None):
+ self.parameters.append((thing, named))
+
+ self.assertFalse(hasattr(Test, 'test'))
+ self.assertTrue(hasattr(Test, 'test_1'))
+ self.assertTrue(hasattr(Test, 'test_2'))
+
+ test = Test()
+ test.test_1()
+ test.test_2()
+
+ self.assertEquals(test.parameters, [('thing', 43), ('thing2', None)])
+
+ def test_with_parameters(self):
+ DATA = [('1', ('thing',), {'named': 43}),
+ ('2', ('thing2',), {'named': None})]
+
+ class Test(Parameterizable):
+ def __init__(self):
+ self.parameters = []
+
+ @with_parameters(DATA)
+ def test(self, thing, named=None):
+ self.parameters.append((thing, named))
+
+ self.assertFalse(hasattr(Test, 'test'))
+ self.assertTrue(hasattr(Test, 'test_1'))
+ self.assertTrue(hasattr(Test, 'test_2'))
+
+ test = Test()
+ test.test_1()
+ test.test_2()
+
+ self.assertEquals(test.parameters, [('thing', 43), ('thing2', None)])
+
+ def test_parameterized_same_name_raises_error(self):
+ with self.assertRaises(KeyError):
+ class Test(Parameterizable):
+ @parameterized('1', 'thing', named=43)
+ @parameterized('1', 'thing2')
+ def test(self, thing, named=None):
+ pass
+
+ def test_marionette_test_case_is_parameterizable(self):
+ self.assertTrue(issubclass(MarionetteTestCase.__metaclass__, MetaParameterized))