# Copyright 2018 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from unittest import mock from mobly import base_instrumentation_test from mobly import config_parser from mobly.controllers import android_device from mobly.controllers.android_device_lib import adb # A mock test package for instrumentation. MOCK_TEST_PACKAGE = 'com.my.package.test' class MockInstrumentationTest( base_instrumentation_test.BaseInstrumentationTestClass): def __init__(self, tmp_dir, user_params={}): mock_test_run_configs = config_parser.TestRunConfig() mock_test_run_configs.summary_writer = mock.Mock() mock_test_run_configs.log_path = tmp_dir mock_test_run_configs.user_params = user_params mock_test_run_configs.reporter = mock.MagicMock() super().__init__(mock_test_run_configs) def run_mock_instrumentation_test(self, instrumentation_output, prefix): def fake_instrument(package, options=None, runner=None, handler=None): for line in instrumentation_output.splitlines(): handler(line) return instrumentation_output mock_device = mock.Mock(spec=android_device.AndroidDevice) mock_device.adb = mock.Mock(spec=adb.AdbProxy) mock_device.adb.instrument = fake_instrument return self.run_instrumentation_test(mock_device, MOCK_TEST_PACKAGE, prefix=prefix)