Bug 1275269 - Create runner_mock fixture for run_tests testing; r?maja_zf draft
authorAnjana Vakil <anjanavakil@gmail.com>
Wed, 22 Jun 2016 17:15:53 +0200
changeset 380670 d408e7ef22aa4732949926d225423d01a390d70b
parent 380669 4d9d1ea312b1257720a8ec7f7c7919efa9b7b30d
child 380671 cf6fd6bed4178d769c1057138b56ac580e2849b5
push id21276
push userbmo:anjanavakil@gmail.com
push dateWed, 22 Jun 2016 16:16:23 +0000
reviewersmaja_zf
bugs1275269
milestone50.0a1
Bug 1275269 - Create runner_mock fixture for run_tests testing; r?maja_zf Create new pytest fixture `runner_mock` to get a runner instance with some properties (e.g. `self.marionette`) mocked out, for use in some new tests for `run_tests`. MozReview-Commit-ID: 1XrkQdEdRy9
testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
--- a/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
+++ b/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
@@ -1,20 +1,21 @@
 # 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/.
 import pytest
-from mock import patch, Mock, DEFAULT, mock_open
+from mock import patch, Mock, DEFAULT, mock_open, MagicMock
 
 from marionette.runtests import (
     MarionetteTestRunner,
     MarionetteHarness,
     cli
 )
 from marionette.runner import MarionetteTestResult
+from marionette_driver.marionette import Marionette
 
 # avoid importing MarionetteJSTestCase to prevent pytest from
 # collecting and running it as part of this test suite
 import marionette.marionette_test as marionette_test
 
 
 def _check_crash_counts(has_crashed, runner, mock_marionette):
     if has_crashed:
@@ -22,18 +23,17 @@ def _check_crash_counts(has_crashed, run
         assert runner.crashed == 1
     else:
         assert runner.crashed == 0
 
 
 @pytest.fixture()
 def mock_marionette(request):
     """ Mock marionette instance """
-    import marionette_driver
-    marionette = Mock(spec=marionette_driver.marionette.Marionette)
+    marionette = Mock(spec=Marionette)
     if 'has_crashed' in request.funcargnames:
         marionette.check_for_crash.return_value = request.getfuncargvalue(
             'has_crashed'
         )
     return marionette
 
 
 @pytest.fixture()
@@ -124,16 +124,28 @@ def mach_parsed_kwargs(logger):
 @pytest.fixture()
 def runner(mach_parsed_kwargs):
     """
     MarionetteTestRunner instance initialized with default options.
     """
     return MarionetteTestRunner(**mach_parsed_kwargs)
 
 
+@pytest.fixture()
+def runner_mock(mach_parsed_kwargs):
+    """
+    MarionetteTestRunner instance with mocked-out
+    self.marionette and other properties.
+    """
+    mach_parsed_kwargs['binary'] = None
+    runner = MarionetteTestRunner(**mach_parsed_kwargs)
+    runner.driverclass = MagicMock(spec=Marionette)
+    runner.run_test_set = Mock()
+    return runner
+
 @pytest.fixture
 def harness_class(request):
     """
     Mock based on MarionetteHarness whose run method just returns a number of
     failures according to the supplied test parameter
     """
     if 'num_fails_crashed' in request.funcargnames:
         num_fails_crashed = request.getfuncargvalue('num_fails_crashed')