UIautomator Python測試

來源:互聯網
上載者:User

標籤:android   gic   stderr   rdo   called   port   setup   tool   raw   

#!/usr/bin/env python# -*- coding: utf-8 -*-import unittestfrom mock import MagicMock, patchimport osimport subprocessfrom uiautomator import Adbclass TestAdb(unittest.TestCase):    def setUp(self):        self.os_name = os.name    def tearDown(self):        os.name = self.os_name    def test_serial(self):        serial = "abcdef1234567890"        adb = Adb(serial)        self.assertEqual(adb.default_serial, serial)        adb.devices = MagicMock()        adb.devices.return_value = [serial, "123456"]        self.assertEqual(adb.device_serial(), serial)    def test_adb_from_env(self):        home_dir = ‘/android/home‘        with patch.dict(‘os.environ‘, {‘ANDROID_HOME‘: home_dir}):            with patch(‘os.path.exists‘) as exists:                exists.return_value = True                os.name = "posix"  # linux                adb_obj = Adb()                adb_path = os.path.join(home_dir, "platform-tools", "adb")                self.assertEqual(adb_obj.adb(), adb_path)                exists.assert_called_once_with(adb_path)                self.assertEqual(adb_obj.adb(), adb_path)                # the second call will return the __adb_cmd directly                exists.assert_called_once_with(adb_path)                os.name = "nt"  # linux                adb_obj = Adb()                adb_path = os.path.join(home_dir, "platform-tools", "adb.exe")                self.assertEqual(adb_obj.adb(), adb_path)                exists.return_value = False                with self.assertRaises(EnvironmentError):                    Adb().adb()    def test_adb_from_find(self):        with patch.dict(‘os.environ‘, {}, clear=True):            with patch("distutils.spawn.find_executable") as find_executable:                find_executable.return_value = "/usr/bin/adb"                with patch("os.path.realpath") as realpath:                    realpath.return_value = "/home/user/android/platform-tools/adb"                    self.assertEqual(realpath.return_value, Adb().adb())                    find_executable.assert_called_once_with("adb")  # find_exectable should be called once                    realpath.assert_called_once_with(find_executable.return_value)                    realpath.return_value = find_executable.return_value                    self.assertEqual(find_executable.return_value, Adb().adb())                find_executable.return_value = None                call_count = find_executable.call_count                with self.assertRaises(EnvironmentError):                    Adb().adb()                self.assertEqual(call_count + 1, find_executable.call_count)    def test_devices(self):        adb = Adb()        adb.raw_cmd = MagicMock()        adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r\n014E05DE0F02000E\tdevice\r\n489328DKFL7DF\tdevice", b"")        self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})        adb.raw_cmd.assert_called_once_with("devices")        adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n\r014E05DE0F02000E\tdevice\n\r489328DKFL7DF\tdevice", b"")        self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})        adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \r014E05DE0F02000E\tdevice\r489328DKFL7DF\tdevice", b"")        self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})        adb.raw_cmd.return_value.communicate.return_value = (b"List of devices attached \n014E05DE0F02000E\tdevice\n489328DKFL7DF\tdevice", b"")        self.assertEqual(adb.devices(), {"014E05DE0F02000E": "device", "489328DKFL7DF": "device"})        adb.raw_cmd.return_value.communicate.return_value = (b"not match", "")        with self.assertRaises(EnvironmentError):            adb.devices()    def test_forward(self):        adb = Adb()        adb.cmd = MagicMock()        adb.forward(90, 91)        adb.cmd.assert_called_once_with("forward", "tcp:90", "tcp:91")        adb.cmd.return_value.wait.assert_called_once_with()    def test_adb_raw_cmd(self):        import subprocess        adb = Adb()        adb.adb = MagicMock()        adb.adb.return_value = "adb"        args = ["a", "b", "c"]        with patch("subprocess.Popen") as Popen:            os.name = "posix"            adb.raw_cmd(*args)            Popen.assert_called_once_with(["%s %s" % (adb.adb(), " ".join(args))], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)        with patch("subprocess.Popen") as Popen:            os.name = "nt"            adb.raw_cmd(*args)            Popen.assert_called_once_with([adb.adb()] + list(args), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)    def test_adb_cmd(self):        adb = Adb()        adb.device_serial = MagicMock()        adb.device_serial.return_value = "ANDROID_SERIAL"        adb.raw_cmd = MagicMock()        args = ["a", "b", "c"]        adb.cmd(*args)        adb.raw_cmd.assert_called_once_with("-s", "%s" % adb.device_serial(), *args)        adb.device_serial.return_value = "ANDROID SERIAL"        adb.raw_cmd = MagicMock()        args = ["a", "b", "c"]        adb.cmd(*args)        adb.raw_cmd.assert_called_once_with("-s", "‘%s‘" % adb.device_serial(), *args)    def test_adb_cmd_server_host(self):        adb = Adb(adb_server_host="localhost", adb_server_port=5037)        adb.adb = MagicMock()        adb.adb.return_value = "adb"        adb.device_serial = MagicMock()        adb.device_serial.return_value = "ANDROID_SERIAL"        args = ["a", "b", "c"]        with patch("subprocess.Popen") as Popen:            os.name = "nt"            adb.raw_cmd(*args)            Popen.assert_called_once_with(                [adb.adb()] + args,                shell=True,                stdout=subprocess.PIPE,                stderr=subprocess.PIPE            )        adb = Adb(adb_server_host="test.com", adb_server_port=1000)        adb.adb = MagicMock()        adb.adb.return_value = "adb"        adb.device_serial = MagicMock()        adb.device_serial.return_value = "ANDROID_SERIAL"        args = ["a", "b", "c"]        with patch("subprocess.Popen") as Popen:            os.name = "posix"            adb.raw_cmd(*args)            Popen.assert_called_once_with(                [" ".join([adb.adb()] + ["-H", "test.com", "-P", "1000"] + args)],                shell=True,                stdout=subprocess.PIPE,                stderr=subprocess.PIPE            )    def test_device_serial(self):        with patch.dict(‘os.environ‘, {‘ANDROID_SERIAL‘: "ABCDEF123456"}):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {"ABCDEF123456": "device"}            self.assertEqual(adb.device_serial(), "ABCDEF123456")        with patch.dict(‘os.environ‘, {‘ANDROID_SERIAL‘: "ABCDEF123456"}):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}            self.assertEqual(adb.device_serial(), "ABCDEF123456")        with patch.dict(‘os.environ‘, {‘ANDROID_SERIAL‘: "HIJKLMN098765"}):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}            self.assertEqual(adb.device_serial(), "HIJKLMN098765")        with patch.dict(‘os.environ‘, {}, clear=True):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {"ABCDEF123456": "device", "123456ABCDEF": "device"}            with self.assertRaises(EnvironmentError):                adb.device_serial()        with patch.dict(‘os.environ‘, {}, clear=True):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {"ABCDEF123456": "device"}            self.assertEqual(adb.device_serial(), "ABCDEF123456")        with self.assertRaises(EnvironmentError):            adb = Adb()            adb.devices = MagicMock()            adb.devices.return_value = {}            adb.device_serial()    def test_forward_list(self):        adb = Adb()        adb.version = MagicMock()        adb.version.return_value = [‘1.0.31‘, ‘1‘, ‘0‘, ‘31‘]        adb.raw_cmd = MagicMock()        adb.raw_cmd.return_value.communicate.return_value = (b"014E05DE0F02000E    tcp:9008    tcp:9008\r\n489328DKFL7DF    tcp:9008    tcp:9008", b"")        self.assertEqual(adb.forward_list(), [[‘014E05DE0F02000E‘, ‘tcp:9008‘, ‘tcp:9008‘], [‘489328DKFL7DF‘, ‘tcp:9008‘, ‘tcp:9008‘]])        adb.version.return_value = [‘1.0.29‘, ‘1‘, ‘0‘, ‘29‘]        with self.assertRaises(EnvironmentError):            adb.forward_list()

  

UIautomator Python測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.