#!/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 t Est_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.envi Ron ', {' 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 would return the __adb_cmd directly exists.assert_called_once_with (Adb_path) OS.N AME = "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 PATC H.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.ret Urn_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_executab Le.return_value self.assertequal (Find_executable.return_value, ADB (). ADB ()) Find_executa Ble.return_value = None Call_count = Find_executable.call_count with self.assertraises (envir Onmenterror): 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.assert Equal (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 ":" Devi Ce "}) Adb.raw_cmd.return_value.communicate.return_value = (b" List of devices attached \R014E05DE0F02000E\TDEVICE\R4 89328dkfl7df\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\n489 328dkfl7df\tdevice ", B" ") Self.assertequal (Adb.devices (), {" 014e05de0f02000e ":" Device "," 489328DKFL7DF ":" Device "} ) Adb.raw_cmd.return_value.communicate.return_value = (b "Not match", "") with Self.assertraises (Environmente Rror): Adb.devices () def test_forward (self): adb = adb () Adb.cmd = Magicmock () adb.forw ARD (adb.cmd.assert_called)_once_with ("Forward", "tcp:90", "tcp:91") Adb.cmd.return_value.wait.assert_called_once_with () def Test_adb_raw_c MD (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.ad B ()] + 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_wi Th ("-S", "'%s '"% adb.device_serial (), *args) def test_adb_cmd_server_host (self): adb = adb (adb_server_host= "Loc Alhost ", 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 ("Sub Process. 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 () a Db.adb.retUrn_value = "adb" adb.device_serial = Magicmock () Adb.device_serial.return_value = "Android_serial" a RGS = ["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", "+"] + args), shell=true, S Tdout=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": "Dev Ice "} self.assertequal (Adb.device_serial ()," ABCDEF123456 ") with Patch.dict (' Os.environ ', {' Android_seri AL ': "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 Oid_serial ': "HIJKLMN098765"}): adb = adb () adb.devices = Magicmock () adb.devices.return_ Value = {"ABCDEF123456": "Device", "123456ABCDEF": "Device"} self.assertequal (Adb.device_serial (), "HIJKLMN0987 ") 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 = Ad B () 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 ', ' + '] adb . Raw_cmd = Magicmock () Adb.raw_cmd.return_value.communicate.return_value = (b "014e05de0f02000e tcp:9008 Tcp:9 008\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 ', ' 2 9 '] with self.assertraises (environmenterror): Adb.forward_list ()
Uiautomator python test