From 231465d60ab80d3718b226454efbedb70a3429d8 Mon Sep 17 00:00:00 2001 From: yanchunhuo Date: Thu, 26 Mar 2020 10:50:23 +0800 Subject: [PATCH] fix bug --- base/read_app_ui_devices_info.py | 3 +- config/app_ui_devices_info_template.conf | 8 +++- ...p_ui_android_devices_info_demoProject.conf | 11 ++++- pojo/app_ui_devices_info.py | 41 +++++++++++-------- run_app_ui_test.py | 9 ++-- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/base/read_app_ui_devices_info.py b/base/read_app_ui_devices_info.py index 3c67751..98af607 100644 --- a/base/read_app_ui_devices_info.py +++ b/base/read_app_ui_devices_info.py @@ -44,7 +44,8 @@ class Read_APP_UI_Devices_Info(object): devices_info.wdaLocalPorts = get_lambda(config.get('devices_info', 'wdaLocalPorts', fallback='')) devices_info.appActivitys = get_lambda(config.get('devices_info','appActivitys',fallback='')) devices_info.appPackages = get_lambda(config.get('devices_info','appPackages',fallback='')) + devices_info.bundleIds = get_lambda(config.get('devices_info','bundleIds',fallback='')) devices_info.apps_dirs = get_lambda(config.get('devices_info','apps_dirs',fallback='')) - devices_info.noSigns = get_lambda(config.get('devices_info', 'noSigns', fallback='')) + devices_info.noSigns = get_lambda(config.get('devices_info','noSigns',fallback='')) devices_info.fullResets = get_lambda(config.get('devices_info', 'fullResets', fallback='')) return devices_info.get_devices_info() \ No newline at end of file diff --git a/config/app_ui_devices_info_template.conf b/config/app_ui_devices_info_template.conf index 7d92a2d..f816eb6 100644 --- a/config/app_ui_devices_info_template.conf +++ b/config/app_ui_devices_info_template.conf @@ -45,11 +45,17 @@ systemports = 8200 || # ios并行测试使用,端口建议从5400开始,不用可注释,并行设备都在同一个appium server上时确保每个设备唯一 # wdaLocalPorts = 5400|| -# appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 +# 仅支持Android:appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 # 查看当前应用的的appActivity、appPackage的命令:adb shell dumpsys window | findstr mCurrentFocus # 单台设备串行测试多个app,使用"##"分割,如appPackages = com.moji.mjweather##com.moji.debug.mjweather || appPackages = com.moji.mjweather || appActivitys = com.moji.mjweather.MainActivity || + +# 仅支持iOS:bundleIds和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 +# 查看设备应用bundleId的命令:ideviceinstaller -l +# 单台设备串行测试多个app,使用"##"分割 +bundleIds = + # app安装包存放的路径,将会遍历目录下所有app包进行串行测试 # 请确保安装包放置在packages目录下,填写相对路径 apps_dirs = diff --git a/config/demoProject/app_ui_android_devices_info_demoProject.conf b/config/demoProject/app_ui_android_devices_info_demoProject.conf index 1f9e378..3e5f9ae 100644 --- a/config/demoProject/app_ui_android_devices_info_demoProject.conf +++ b/config/demoProject/app_ui_android_devices_info_demoProject.conf @@ -42,12 +42,19 @@ systemports = 8200 || # ios并行测试使用,端口建议从5400开始,不用可注释,并行设备都在同一个appium server上时确保每个设备唯一 # wdaLocalPorts = 5400|| -# appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 +# 仅支持Android:appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 # 查看当前应用的的appActivity、appPackage的命令:adb shell dumpsys window | findstr mCurrentFocus # 单台设备串行测试多个app,使用"##"分割,如appPackages = com.moji.mjweather##com.moji.debug.mjweather || appPackages = com.moji.mjweather || appActivitys = com.moji.mjweather.MainActivity || + +# 仅支持iOS:bundleIds和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个 +# 查看设备应用bundleId的命令:ideviceinstaller -l +# 单台设备串行测试多个app,使用"##"分割 +bundleIds = + # app安装包存放的路径,将会遍历目录下所有app包进行串行测试 +# 请确保安装包放置在packages目录下,填写相对路径 apps_dirs = # 是否跳过检测和使用debug key对app进行签名,该参数配合apps_dirs有值时使用。仅对UiAutomator有效,默认为false @@ -56,4 +63,4 @@ noSigns = True || # android:启动session前及结束测试后停止app、清除app数据、卸载app # ios:在开始测试前及结束测试后卸载app、销毁模拟器 # 当为True时,apps_dirs必须提供 -fullResets = False || \ No newline at end of file +fullResets = True || \ No newline at end of file diff --git a/pojo/app_ui_devices_info.py b/pojo/app_ui_devices_info.py index bfe44a8..9ab2230 100644 --- a/pojo/app_ui_devices_info.py +++ b/pojo/app_ui_devices_info.py @@ -20,6 +20,7 @@ class APP_UI_Devices_Info: self.wdaLocalPorts = [] self.appPackages = [] self.appActivitys = [] + self.bundleIds = [] self.apps_dirs = [] self.noSigns=[] self.fullResets=[] @@ -37,20 +38,25 @@ class APP_UI_Devices_Info: if self.system_auth_alert_labels: device_info.update({'system_auth_alert_label': self.system_auth_alert_labels[i]}) # 构建desired_capabilities - a_device_capabilities_num=0 - a_device_appActivitys=[] - a_device_appPackages=[] - a_device_apps=[] - if self.appActivitys and self.appPackages: - a_device_appActivitys=self.appActivitys[i].split('&&') - a_device_appPackages=self.appPackages[i].split('&&') - a_device_capabilities_num=len(a_device_appActivitys) - if self.apps_dirs: - a_device_capabilities_num=len(self.apps_dirs) - paths=os.walk(self.apps_dirs[i].strip()) - for dirPath,dirName,fileNames in paths: + a_device_capabilities_num = 0 + a_device_appActivitys = [] + a_device_appPackages = [] + a_device_bundleIds = [] + a_device_apps = [] + if len(self.appActivitys) and len(self.appPackages): + a_device_appActivitys = self.appActivitys[i].split('&&') + a_device_appPackages = self.appPackages[i].split('&&') + a_device_capabilities_num = len(a_device_appActivitys) + if len(self.bundleIds): + a_device_bundleIds = self.bundleIds[i].split('&&') + a_device_capabilities_num = len(a_device_bundleIds) + if len(self.apps_dirs): + a_device_capabilities_num = len(self.apps_dirs) + paths = os.walk(self.apps_dirs[i].strip()) + for dirPath, dirName, fileNames in paths: for fileName in fileNames: - a_device_apps.append(('http://%s:%s/%s/%s')%(local_ip,httpserver_port,self.apps_dirs[i].strip(),fileName)) + a_device_apps.append( + ('http://%s:%s/%s/%s') % (local_ip, httpserver_port, self.apps_dirs[i].strip(), fileName)) a_devices_desired_capabilities=[] for j in range(a_device_capabilities_num): desired_capabilities={} @@ -65,13 +71,12 @@ class APP_UI_Devices_Info: desired_capabilities.update({'systemport': self.systemports[i].strip()}) if len(self.wdaLocalPorts): desired_capabilities.update({'wdaLocalPort': self.wdaLocalPorts[i].strip()}) - if self.appActivitys and self.appPackages: + if len(self.appActivitys) and len(self.appPackages): desired_capabilities.update({'appActivity': a_device_appActivitys[j].strip()}) desired_capabilities.update({'appPackage': a_device_appPackages[j].strip()}) - else: - desired_capabilities.update({'appActivity': ''}) - desired_capabilities.update({'appPackage': ''}) - if self.apps_dirs: + if len(self.bundleIds): + desired_capabilities.update({'bundleId':a_device_bundleIds[j].strip()}) + if len(self.apps_dirs): desired_capabilities.update({'app': a_device_apps[j]}) if len(self.noSigns): noSign=False diff --git a/run_app_ui_test.py b/run_app_ui_test.py index 9964e4d..ae2800b 100644 --- a/run_app_ui_test.py +++ b/run_app_ui_test.py @@ -44,10 +44,13 @@ def start_app_device_test(index,device_info,keyword,dir,markexpr,capture,reruns, for desired_capabilities in a_devices_desired_capabilities: FileTool.writeObjectIntoFile(desired_capabilities, 'config/app_ui_tmp/' + str(os.getpid()) + '_current_desired_capabilities') - if desired_capabilities['appPackage']: + desired_capabilities_desc = None + if 'appPackage' in desired_capabilities.keys(): desired_capabilities_desc = desired_capabilities['appPackage'] - else: - desired_capabilities_desc=desired_capabilities['app'].split('/')[-1] + elif 'app' in desired_capabilities.keys(): + desired_capabilities_desc = desired_capabilities['app'].split('/')[-1] + elif 'bundleId' in desired_capabilities.keys(): + desired_capabilities_desc = desired_capabilities['bundleId'] print('当前设备开始测试的desired_capabilities为:%s' % desired_capabilities) # 执行pytest前的参数准备 pytest_execute_params = ['-c', 'config/pytest.ini', '-v', '--alluredir',