def _get_app(self): ADB.is_rooted = mock.Mock(return_value=False) ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', 'test') adb = ADB(adb_backend) device = Device(adb) return AndroidDemoApp(device)
def test_logcat_thread_func(self): adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) adb._log_list = [] adb._logcat_running = True adb._log_pipe = MockPopen() adb._log_pipe.stdout.write( b'08-05 10:46:13.395 100 22878 I DEBUG (22878): Revision: 0\n') adb._log_pipe.stdout.write( b'08-05 10:46:13.395 101 22878 I DEBUG (22878): Revision: 0\n') def stop_thread(): time.sleep(1) adb._logcat_running = False adb._log_pipe.stdout.write(b'\n') t = threading.Thread(target=stop_thread) t.daemon = True t.start() process = {'pid': 100, 'proc_name': '<pre-initialized>', 'ppid': 1} def mock_list_process(): if process['proc_name'] == '<pre-initialized>': proc = copy.copy(process) process['proc_name'] = 'com.qta.qt4a' return [proc] else: return [process] ADB.list_process = mock.Mock(side_effect=mock_list_process) adb._logcat_thread_func([])
def __init__(self, id_or_adb_backend=None): '''获取一个Android设备,获取成功后则独占该设备。 :param device_id: 获取制定设备id的Android设备。如果为空则任意获取一台空闲设备。 ''' self._device = None if isinstance(id_or_adb_backend, str): adb_backend = LocalADBBackend.open_device(id_or_adb_backend) elif not id_or_adb_backend: local_device_list = LocalDeviceProvider.list() if not local_device_list: raise RuntimeError('No local device found') adb_backend = LocalADBBackend.open_device(local_device_list[0]) else: adb_backend = id_or_adb_backend self._adb = ADB.open_device(adb_backend) self._device_driver = DeviceDriver(self._adb) Device.device_list.append(self)
def test_list_process(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) result = adb.list_process() self.assertEqual(len(result), 172) self.assertEqual(result[0]['ppid'], 0) self.assertEqual(result[0]['pid'], 1) self.assertEqual(result[0]['proc_name'], '/init')
def test_list_dir(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) ADB.is_rooted = mock.Mock(return_value=True) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) dir_list, file_list = adb.list_dir('/data/data') self.assertEqual(len(dir_list), 89) self.assertEqual(len(file_list), 0) self.assertEqual(dir_list[0]['name'], 'com.android.apps.tag') self.assertEqual(dir_list[0]['attr'], 'rwxr-x--x')
def list(): '''获取本地可用设备列表 ''' device_list = LocalADBBackend.list_device() _device_list = [] for device in device_list: if device.startswith('emulator-'): continue # 避免出现两个名字不同的同一设备 _device_list.append(device) import random random.shuffle(_device_list) # 可以随机取设备 return _device_list
def test_save_log(self): adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) adb.start_logcat() adb.insert_logcat('test', 2019, '0101', '10:51:42.899', 'I', 'test', 1, '我们') adb.insert_logcat('test', 2019, '0101', '10:51:42.899', 'I', 'test', 1, u'中国'.encode('gbk')) adb.insert_logcat('test', 2019, '0101', '10:51:42.899', 'I', 'test', 1, u'\ub274') save_path = tempfile.mkstemp('.log')[1] adb.save_log(save_path) with open(save_path, 'r') as fp: text = fp.read() self.assertIn('我们', text) self.assertIn('中国', text)
def list(): '''获取本地可用设备列表 ''' device_list = LocalADBBackend.list_device() _device_list = [] for device in device_list: if device.startswith('emulator-'): continue # 避免出现两个名字不同的同一设备 _device_list.append(device) available_devices = os.environ.get('QT4A_AVAILABLE_DEVICES', '') if _device_list and available_devices: intersect_device_list = [] available_device_list = available_devices.split(',') for available_device in available_device_list: available_device = available_device.strip() if available_device in _device_list: intersect_device_list.append(available_device) _device_list = intersect_device_list import random random.shuffle(_device_list) # 可以随机取设备 return _device_list
def _get_device_driver(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) return DeviceDriver(adb)
def test_get_pid(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_pid('android.process.media'), 3157)
def test_get_cpu_abi(self): for arch in ['armeabi-v7a', 'x86']: ADB.run_shell_cmd = mock.Mock(return_value=arch) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_cpu_abi(), arch)
def _create_driver(self): adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) return AndroidDriver(DeviceDriver(adb), None)
def test_get_uid(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_uid('com.tencent.mobileqq'), 'u0_a1309')
def test_get_system_version(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) ADB.is_rooted = mock.Mock(return_value=False) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_system_version(), '5.0.2')
def test_get_device_model(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) ADB.is_rooted = mock.Mock(return_value=False) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_device_model(), 'Xiaomi MI 4C')
def test_get_device_imei(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) ADB.is_rooted = mock.Mock(return_value=False) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_device_imei(), '99000567737777')
def test_get_sdk_version(self): ADB.run_shell_cmd = mock.Mock(side_effect=mock_run_shell_cmd) adb_backend = LocalADBBackend('127.0.0.1', '') adb = ADB(adb_backend) self.assertEqual(adb.get_sdk_version(), 21)