def __init__(self): if self.__inited is None: self.demoProjectConfig = API_DemoProject_Read_Config().config self.demoProjectDBClients = API_DemoProject_DB_Clients() self.doRequest = DoRequest(self.demoProjectConfig.url) self.__inited = True
def __init__(self, url: str, username: str, password: str): self.url = url self.username = username self.password = password self.url = urljoin(self.url, '/api/v3') self.doRequest = DoRequest(self.url) self.private_token = self._get_private_token() self._path_private_token = '?private_token=%s' % self.private_token
def __init__(self): if self.__inited is None: self.demoProjectConfig = DemoProjectReadConfig().config self.demoProjectDBClients = DemoProjectDBClients() self.doRequest = DoRequest(self.demoProjectConfig.url) self.csrftoken = self._initCsrftoken() self.__inited = True
def _delete_last_device_session(self, device_desc): if os.path.exists('config/app_ui_tmp/%s_session' % device_desc): with open('config/app_ui_tmp/%s_session' % device_desc, 'r') as f: last_session = f.read() last_session = last_session.strip() if last_session: doRequest = DoRequest(self._appium_hub) doRequest.setHeaders({'Content-Type': 'application/json'}) httpResponseResult = doRequest.delete('/session/' + last_session)
def __init__(self, url: str, username: str, password: str, is_verify_ssl_cer=True): self.url = url self.username = username self.password = password self.doRequest = DoRequest(self.url) self.doRequest.setVerify(is_verify_ssl_cer) self._login()
def __init__(self, driver, appium_hub): self._doRequest = DoRequest(appium_hub) self._doRequest.setHeaders({'Content-Type': 'application/json'}) self._driver = driver self._session_id = driver.session_id # 获得设备支持的性能数据类型 self._performance_types = ujson.loads( self._doRequest.post_with_form( '/session/' + self._session_id + '/appium/performanceData/types').body)['value'] # 获取当前窗口大小 self._windows_size = self.get_window_size()
type=str) parser.add_argument('-r', '--reruns', help='失败重跑次数,默认为0', type=str) parser.add_argument('-lf', '--lf', help='是否运行上一次失败的用例,1:是、0:否,默认为0', type=str) parser.add_argument('-clr', '--clr', help='是否清空已有测试结果,1:是、0:否,默认为0', type=str) args = parser.parse_args() print('%s开始初始化......' % DateTimeTool.getNowTime()) print('%s开始检测selenium server是否可用......' % DateTimeTool.getNowTime()) try: doRquest = DoRequest(Read_WEB_UI_Config().web_ui_config.selenium_hub) httpResponseResult = doRquest.get('/status') result = ujson.loads(httpResponseResult.body) if result['status'] == 0: print('%sselenium server状态为可用......' % DateTimeTool.getNowTime()) else: sys.exit('%sselenium server状态为不可用' % DateTimeTool.getNowTime()) except: sys.exit('%sselenium server状态为不可用' % DateTimeTool.getNowTime()) # 处理pytest文件 deal_pytest_ini_file() # 初始化java依赖的libs java_maven_init()
def __init__(self,webhook:str,secret_key:str=None): self.webhook=webhook self.secret_key=secret_key self.doRequest=DoRequest(self.webhook) self.doRequest.setHeaders({'Content-Type':'application/json'})
def start_app_device_test(index,device_info,keyword,dir,markexpr,capture,reruns,lf,clr): for path, dirs, files in os.walk('config/app_ui_tmp'): for file in files: if(int(file)==index): os.rename(os.path.join(path,file),os.path.join(path,str(os.getpid()))) print('%s开始检测appium server是否可用......'%DateTimeTool.getNowTime()) try: doRquest = DoRequest('http://'+device_info['server_ip']+':%s/wd/hub'%device_info['server_port'].strip()) httpResponseResult = doRquest.get('/status') result = ujson.loads(httpResponseResult.body) if result['status'] == 0: print('%sappium server状态为可用......'%DateTimeTool.getNowTime()) else: sys.exit('%sappium server状态为不可用'%DateTimeTool.getNowTime()) except: print('%sappium server状态为不可用'%DateTimeTool.getNowTime()) raise Exception('%sappium server状态为不可用'%DateTimeTool.getNowTime()) a_devices_desired_capabilities = device_info['capabilities'] print('%s开始设备%s测试......'%(DateTimeTool.getNowTime(),device_info['device_desc'])) print('%s当前设备所需测试的desired_capabilities为:%s'%(DateTimeTool.getNowTime(),a_devices_desired_capabilities)) for desired_capabilities in a_devices_desired_capabilities: FileTool.writeObjectIntoFile(desired_capabilities,'config/app_ui_tmp/'+str(os.getpid())+'_current_desired_capabilities') desired_capabilities_desc=None if 'appPackage' in desired_capabilities.keys(): desired_capabilities_desc = desired_capabilities['appPackage'] 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('%s当前设备开始测试的desired_capabilities为:%s'%(DateTimeTool.getNowTime(),desired_capabilities)) # 执行pytest前的参数准备 pytest_execute_params = ['-c', 'config/pytest.ini', '-v', '--alluredir', 'output/app_ui/%s/%s/report_data/'%(device_info['device_desc'],desired_capabilities_desc)] # 判断目录参数 if not dir: dir = 'cases/app_ui/' # 判断关键字参数 if keyword: pytest_execute_params.append('-k') pytest_execute_params.append(keyword) # 判断markexpr参数 if markexpr: pytest_execute_params.append('-m') pytest_execute_params.append(markexpr) # 判断是否输出日志 if capture: if int(capture): pytest_execute_params.append('-s') # 判断是否失败重跑 if reruns: if int(reruns): pytest_execute_params.append('--reruns') pytest_execute_params.append(reruns) # 判断是否只运行上一次失败的用例 if lf: if int(lf): pytest_execute_params.append('--lf') # 判断是否清空已有测试结果 if clr: if int(clr): pytest_execute_params.append('--clean-alluredir') pytest_execute_params.append(dir) # 构建孙进程 process = multiprocessing.Process(target=pytest_main,args=(pytest_execute_params,)) process.start() process.join() print('%s当前设备结束测试的desired_capabilities为:%s' % (DateTimeTool.getNowTime(),desired_capabilities)) print('%s结束设备%s测试......'%(DateTimeTool.getNowTime(),device_info['device_desc']))
import pytest import sys if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-k', '--keyword', help='只执行匹配关键字的用例,会匹配文件名、类名、方法名', type=str) parser.add_argument('-d', '--dir', help='指定要测试的目录', type=str) args = parser.parse_args() print '开始初始化......' print '开始检测selenium server是否可用......' try: doRquest = DoRequest(ReadConfig().config.selenium_hub) httpResponseResult = doRquest.get('/status') result = json.loads(httpResponseResult.body) if result['status'] == 0: print 'selenium server状态为可用......' else: sys.exit('selenium server状态为不可用') except: sys.exit('selenium server状态为不可用') print '初始化基础数据......' init() print '初始化基础数据完成......' print '初始化完成......' print '开始测试......'
def __init__(self, url: str, access_token: str): self.url = url self.access_token = access_token self.url = urljoin(self.url, '/api/v4') self.doRequest = DoRequest(self.url) self.doRequest.updateHeaders({'PRIVATE-TOKEN': self.access_token})
import jpype import json import pytest import sys if __name__=='__main__': parser=argparse.ArgumentParser() parser.add_argument('-k','--keyword',help='只执行匹配关键字的用例,会匹配文件名、类名、方法名',type=str) parser.add_argument('-d','--dir',help='指定要测试的目录',type=str) parser.add_argument('-s', '--capture', help='是否在标准输出流中输出日志,1:是、0:否') args=parser.parse_args() print('开始初始化......') print('开始检测appium server是否可用......') try: doRquest=DoRequest(Read_APP_UI_Config().app_ui_config.appium_hub) httpResponseResult=doRquest.get('/status') result=json.loads(httpResponseResult.body) if result['status']==0: print('appium server状态为可用......') else: sys.exit('appium server状态为不可用') except: sys.exit('appium server状态为不可用') print('启动jvm......') jpype.startJVM(jpype.get_default_jvm_path(),"-ea","-Djava.class.path="+JavaTool.getAllJar()) print('启动jvm成功') java_maven_init()
def __init__(self, webhook: str): self.webhook = webhook self.doRequest = DoRequest(self.webhook) self.doRequest.setVerify(False) self.doRequest.setHeaders({'Content-Type': 'application/json'})
import pytest import sys if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-k', '--keyword', help='只执行匹配关键字的用例,会匹配文件名、类名、方法名', type=str) parser.add_argument('-d', '--dir', help='指定要测试的目录', type=str) args = parser.parse_args() print '开始初始化......' print '开始检测appium server是否可用......' try: doRquest = DoRequest(ReadConfig().config.appium_hub) httpResponseResult = doRquest.get('/status') result = json.loads(httpResponseResult.body) if result['status'] == 0: print 'appium server状态为可用......' else: sys.exit('appium server状态为不可用') except: sys.exit('appium server状态为不可用') print '启动jvm......' jpype.startJVM(jpype.get_default_jvm_path(), "-ea", "-Djava.class.path=" + JavaTool.getAllJar()) print '启动jvm成功'
def __init__(self,url:str,username:str,password:str): self.url=url self.username=username self.password=password self.doRequest=DoRequest(self.url) self._login()
def start_app_device_test(index,device_info,keyword,dir,markexpr,capture,reruns,lf): for path, dirs, files in os.walk('config/app_ui_tmp'): for file in files: if(int(file)==index): os.rename(os.path.join(path,file),os.path.join(path,str(os.getpid()))) print('开始检测appium server是否可用......') try: doRquest = DoRequest('http://'+device_info['server_ip']+':%s/wd/hub'%device_info['server_port'].strip()) httpResponseResult = doRquest.get('/status') result = ujson.loads(httpResponseResult.body) if result['status'] == 0: print('appium server状态为可用......') else: sys.exit('appium server状态为不可用') except: sys.exit('appium server状态为不可用') a_devices_desired_capabilities = device_info['capabilities'] print('开始设备' + device_info['device_desc'] + '测试......') 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 = desired_capabilities['appPackage'] else: desired_capabilities_desc = os.path.basename(desired_capabilities['app']) print('当前设备开始测试的desired_capabilities为:%s' % desired_capabilities) # 执行pytest前的参数准备 pytest_execute_params = ['-c', 'config/pytest.ini', '-v', '--alluredir', 'output/app_ui/' + device_info['device_desc'] + '/' + desired_capabilities_desc] # 判断目录参数 if not dir: dir = 'cases/app_ui/' # 判断关键字参数 if keyword: pytest_execute_params.append('-k') pytest_execute_params.append(keyword) # 判断markexpr参数 if markexpr: pytest_execute_params.append('-m') pytest_execute_params.append(markexpr) # 判断是否输出日志 if capture: if int(capture): pytest_execute_params.append('-s') # 判断是否失败重跑 if reruns: if int(reruns): pytest_execute_params.append('--reruns') pytest_execute_params.append(reruns) # 判断是否只运行上一次失败的用例 if lf: if int(lf): pytest_execute_params.append('--lf') pytest_execute_params.append(dir) # 构建孙进程 process = multiprocessing.Process(target=pytest_main, args=(pytest_execute_params,)) process.start() process.join() print('当前设备结束测试的desired_capabilities为:%s' % desired_capabilities) print('结束设备' + device_info['device_desc'] + '测试......')
def __init__(self, url): self._url = url self._doRequest = DoRequest(self._url) self._doRequest.setProxies({'http': '127.0.0.1:8888'})
def __init__(self): self.demoProjectConfig=DemoProjectInit().getDemoProjectConfig() self.doRequest=DoRequest(self.demoProjectConfig.url) self.csrftoken=None self._initCsrftoken()