Пример #1
0
 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)
Пример #2
0
    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([])
Пример #3
0
 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)
Пример #4
0
 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')
Пример #5
0
 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')
Пример #6
0
    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
Пример #7
0
 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)
Пример #8
0
    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
Пример #9
0
 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)
Пример #10
0
 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)
Пример #11
0
 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)
Пример #12
0
 def _create_driver(self):
     adb_backend = LocalADBBackend('127.0.0.1', '')
     adb = ADB(adb_backend)
     return AndroidDriver(DeviceDriver(adb), None)
Пример #13
0
 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')
Пример #14
0
 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')
Пример #15
0
 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')
Пример #16
0
 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')
Пример #17
0
 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)