This commit is contained in:
yanchunhuo 2020-03-26 10:50:23 +08:00
parent f471662195
commit 231465d60a
5 changed files with 47 additions and 25 deletions

View File

@ -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()

View File

@ -45,11 +45,17 @@ systemports = 8200 ||
# ios并行测试使用端口建议从5400开始不用可注释并行设备都在同一个appium server上时确保每个设备唯一
# wdaLocalPorts = 5400||
# appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个
# 仅支持AndroidappActivitys、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 ||
# 仅支持iOSbundleIds和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个
# 查看设备应用bundleId的命令ideviceinstaller -l
# 单台设备串行测试多个app使用"##"分割
bundleIds =
# app安装包存放的路径将会遍历目录下所有app包进行串行测试
# 请确保安装包放置在packages目录下填写相对路径
apps_dirs =

View File

@ -42,12 +42,19 @@ systemports = 8200 ||
# ios并行测试使用端口建议从5400开始不用可注释并行设备都在同一个appium server上时确保每个设备唯一
# wdaLocalPorts = 5400||
# appActivitys、appPackages和apps_dirs(安装包路径)两者选一,不选的放空,多设备仅需填写一个
# 仅支持AndroidappActivitys、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 ||
# 仅支持iOSbundleIds和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 ||
fullResets = True ||

View File

@ -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

View File

@ -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',