def login_test(username, password): login_test = Login() event_log('case', 'start login') login_test.login(username, password) login_test.get_url() login_test.action_result('login') login_test.screenshot('login')
def app_create_byyaml(app_name): # 创建应用 # myapp = 'autobyyaml' + str(random.randint(1, 1000)) logger.debug('开始创建应用{}'.format(app_name)) create_app_byyaml = AppCreatePage() event_log('case', 'create app by yaml') create_app_byyaml.click_element('sidebar_applist_loc') create_app_byyaml.Create_App_by_Yml(app_name) sleep(2) create_app_byyaml.action_result('create app') create_app_byyaml.screenshot('create_app_byyaml')
def app_create_byimage(app_name): # myapp = 'autobyimage' + str(random.randint(1, 1000)) logger.debug('开始创建应用{}'.format(app_name)) create_app_byimage = AppCreatePage() event_log('case', 'create app by image') create_app_byimage.click_element('sidebar_applist_loc') create_app_byimage.Create_App_throughImage( 'daocloud.io/daocloud/dao-2048:latest', app_name) sleep(2) create_app_byimage.action_result('create app') create_app_byimage.screenshot('create_app_byimage')
def OpenTty(self): # self.click_element('appdetail_opentty_loc') self.click_element('appdetail_opentty_ensure_loc') sleep(4) window = self.get_handle() if len(window) == 2: event_log('success', 'open tty') self.switch_win(window[1]) self.screenshot('appdetail_opentty') self.close() self.switch_win(window[0]) else: event_log('fail', 'open tty') self.screenshot('appdetail_opentty') return self.click_element('appdetail_opentty_cancel_loc')
def create_app_action_result(self, appname): try: noty = '//*[@class="header-name"]' cmd = 'kubectl get app | grep ' + appname appresource = self.get_hostcmd(cmd) if appname in appresource: sign = True else: sign = False element = self.element_present(noty) while element: # while sign: #判断标准应该只有app资源有没有被创建出来,界面只用做截图 return event_log('success', ' create app') return event_log('fail', ' create app') except TimeoutException: return event_log('fail', ' create app')
def ManageLabel(self, mov): # 编辑标签 # self.click_element('appdetail_managelabel_loc') # sleep(1) if mov == 'add': print('666') self.click_element('appdetail_managelabel_add_deploylabel_loc') self.type('appdetail_managelabel_input_deploylabel_key_loc', 'deploytest' + str(random.randint(1, 1000))) self.type('appdetail_managelabel_input_deploylabel_value_loc', 'true') self.click_element('appdetail_managelabel_podlabel_loc') self.click_element('appdetail_managelabel_add_podlabel_loc') self.type('appdetail_managelabel_input_podlabel_key_loc', 'podtest' + str(random.randint(1, 1000))) self.type('appdetail_managelabel_input_podlabel_value_loc', 'true') self.Double_Assure if mov == 'edit': event_log('case', 'edit label') # self.action_result('appdetail managelabel', 'sign') return self.screenshot('appdetail_manage_label')
def appdetail_action_result(self, testcase, appname, expectdata='none'): deployment_cfg_list = [ 'changerc', 'changeimg', 'managedeploylabel', 'managepodlabel', 'changeresource', 'scheduledeployment' ] deployment_cfg_dir = { 'changerc': ['spec', 'replicas'], 'changeimg': ['spec', 'template', 'spec', 'containers', 'image'], 'managedeploylabel': ['metadata', 'labels'], 'managepodlabel': ['spec', 'template', 'metadata', 'labels'], 'changeresource': ['spec', 'template', 'spec', 'containers', 'resources'], 'scheduledeployment': ['spec', 'template', 'spec', 'affinity', 'nodeAffinity'] } if testcase == 'managedeployment': # 启动/停止/重启服务用例结果判断 sign = '//*[@class="noty_body"]' try: element = self.element_present(sign) while element: return event_log('success', testcase) except TimeoutException: return event_log('fail', testcase) elif testcase == 'adddeployment': # 在应用下添加服务用例结果判断 cmd = 'kubectl describe app ' + appname + " | grep 'Deployment Name' | awk '{print $3}'" realdeploymentnames = self.get_hostcmd(cmd) if expectdata in realdeploymentnames: return event_log('success', testcase) else: return event_log('fail', testcase) elif testcase in deployment_cfg_list: # 配置服务相关用例结果判断 deployment_name = self.get_hostcmd( "kubectl get deployment | awk '{print $1}' | grep " + appname) # 得到服务名称,没有考虑多服务应用 cmd = 'kubectl get deployment ' + deployment_name + ' -o yaml' deployment_yaml = self.get_hostcmd(cmd) realdata = yaml.load(deployment_yaml, Loader=yaml.FullLoader) loc = deployment_cfg_dir(testcase) for i in loc: realdata = realdata[i] if realdata == expectdata: return event_log('success', testcase) else: return event_log('fail', testcase)
def managelabel(mov): event_log('case', 'appdetail ' + mov + ' label') appdetail.click_element('appdetail_managelabel_loc') sleep(1) appdetail.ManageLabel(mov)
def managedeployment(mov): event_log('case', 'appdetail ' + mov + ' deployment') appdetail.ManageDeployment(mov)
def changeimg(imgaddr): event_log('case', 'appdetail change image') appdetail.click_element('appdetail_changeimg_loc') sleep(1) appdetail.ChangeImg(imgaddr)
def changerc(num): event_log('case', 'appdetail change rc') appdetail.click_element('appdetail_changerc_loc') appdetail.ChangeRc(num)
def deployment_opentty(): event_log('case','deployment_detail open tty') deployment_detail.click_element('deploymentdetail_opentty_loc') sleep(1) deployment_detail.OpenTty()
self.click_element('applist_createappbyimage_continue_loc') self.click_element('applist_createappbyimage_auditapp_loc') self.click_element('applist_createappbyimage_deployapp_loc') def create_app_action_result(self, appname): try: noty = '//*[@class="header-name"]' cmd = 'kubectl get app | grep ' + appname appresource = self.get_hostcmd(cmd) if appname in appresource: sign = True else: sign = False element = self.element_present(noty) while element: # while sign: #判断标准应该只有app资源有没有被创建出来,界面只用做截图 return event_log('success', ' create app') return event_log('fail', ' create app') except TimeoutException: return event_log('fail', ' create app') if __name__ == '__main__': login_test('admin', 'changeme') app_name = 'autobyyaml' + str(random.randint(1, 1000)) create_app_byyaml = AppCreatePage() event_log('case', 'create app by yaml') create_app_byyaml.Create_App_by_Yml(app_name) sleep(2) create_app_byyaml.create_app_action_result(app_name) create_app_byyaml.screenshot('create_app_byyaml')
def adddeployment(image_addr, deploymentname): event_log('case', 'appdetail add deployment') appdetail.AddDeployment(image_addr, deploymentname)
def pod_delete(): event_log('case', 'pod_detail delete pod') pod_detail.click_element('poddetail_more_loc') pod_detail.click_element('poddetail_more_delete_loc') pod_detail.click_element('poddetail_more_delete_ensure_loc')
from base_element import event_log from PodDetailPage import PodDetailPage from login_test import login_test from time import sleep import random pod_detail = PodDetailPage() def pod_opentty(): event_log('case', 'pod_detail open tty') pod_detail.click_element('poddetail_more_loc') pod_detail.click_element('poddetail_more_opentty_loc') pod_detail.OpenTty() def pod_delete(): event_log('case', 'pod_detail delete pod') pod_detail.click_element('poddetail_more_loc') pod_detail.click_element('poddetail_more_delete_loc') pod_detail.click_element('poddetail_more_delete_ensure_loc') if __name__ == '__main__': login_test('admin', 'changeme') integratedpod = PodDetailPage() event_log('case', 'manage pod') integratedpod.click_element('sidebar_podlist_loc') integratedpod.click_element('podlist_firstpod_loc') integratedpod.get_url() pod_opentty()
def deployment_changerc(num): event_log('case','deployment_detail change rc') deployment_detail.click_element('deploymentdetail_more_loc') deployment_detail.click_element('deploymentdetail_more_changerc_loc') deployment_detail.ChangeRc(num)
def deployment_changeimg(imgaddr): event_log('case','deployment_detail change image') deployment_detail.click_element('deploymentdetail_more_loc') deployment_detail.click_element('deploymentdetail_more_changeimg_loc') deployment_detail.ChangeImg(imgaddr)
def changeresource(cpulimit, cpurequest, memlimit): event_log('case', 'appdetail change deployment resource') appdetail.click_element('appdetail_toolbarconfig_loc') appdetail.move_element('appdetail_deploymentlist_gear_loc') appdetail.double_click('appdetail_toolbarconfig_resourceconfig_loc') appdetail.ChangeResource(cpulimit, cpurequest, memlimit)
deployment_detail.click_element('deploymentdetail_more_changerc_loc') deployment_detail.ChangeRc(num) def deployment_changeimg(imgaddr): event_log('case','deployment_detail change image') deployment_detail.click_element('deploymentdetail_more_loc') deployment_detail.click_element('deploymentdetail_more_changeimg_loc') deployment_detail.ChangeImg(imgaddr) def deployment_managedeployment(mov): event_log('case','deployment_detail manage deployment') deployment_detail.click_element('deploymentdetail_more_loc') deployment_detail.click_element('deploymentdetail_more_status_loc') def deployment_managelabel(mov): pass if __name__ == '__main__': login_test('admin','changeme') integrateddeployment = DeploymentDetailPage() event_log('case','manage deployment') integrateddeployment.click_element('sidebar_workloadlist_loc') integrateddeployment.click_element('sidebar_workload_deploymentlist_loc') integrateddeployment.click_element('deploymentlist_firstdeploy_loc') integrateddeployment.get_url() # deployment_opentty() # integrateddeployment.click_element('sidebar_workload_deploymentlist_loc') # deployment_changerc(3) deployment_changeimg('daocloud.io/daocloud/dao-2048:v1.0.3')
def scheduledeployment(schedulelabel): event_log('case', 'appdetail change deployment schedule policy') appdetail.click_element('appdetail_toolbarconfig_loc') appdetail.move_element('appdetail_deploymentlist_gear_loc') appdetail.double_click('appdetail_toolbarconfig_scheduleconfig_loc') appdetail.ScheduleDeployment(schedulelabel)
def addservice(service_name): event_log('case','add service') servicedetail.click_element() servicedetail.AddService(service_name)
def installmodel(imgaddr): event_log('case', 'modelshop install model manually') model.click_element('modelshop_installed_loc') model.InstallModel(imgaddr)
def opentty(): event_log('case', 'appdetail open tty') appdetail.click_element('appdetail_opentty_loc') sleep(1) appdetail.OpenTty()
def pod_opentty(): event_log('case', 'pod_detail open tty') pod_detail.click_element('poddetail_more_loc') pod_detail.click_element('poddetail_more_opentty_loc') pod_detail.OpenTty()
def deployment_managedeployment(mov): event_log('case','deployment_detail manage deployment') deployment_detail.click_element('deploymentdetail_more_loc') deployment_detail.click_element('deploymentdetail_more_status_loc')
appdetail.move_element('appdetail_deploymentlist_gear_loc') appdetail.double_click('appdetail_toolbarconfig_scheduleconfig_loc') appdetail.ScheduleDeployment(schedulelabel) def adddeployment(image_addr, deploymentname): event_log('case', 'appdetail add deployment') appdetail.AddDeployment(image_addr, deploymentname) if __name__ == '__main__': login_test('admin', 'changeme') # app_create.app_create_byyaml('autobyyaml' + str(random.randint(1, 1000))) # app_create.app_create_byimage('autobyimage' + str(random.randint(1, 1000))) integratedapp = AppDetailPage() event_log('case', 'manage app') integratedapp.click_element('sidebar_applist_loc') integratedapp.click_element('applist_firstapp_loc') integratedapp.get_url() # opentty() # sleep(1) # changerc(2) # sleep(1) changeimg('daocloud.io/daocloud/dao-2048:v1.0.3') sleep(1) # managedeploylist = ['stop', 'restart'] # for i in managedeploylist: # managedeployment(i) # sleep(3) # sleep(2) # managelabel('add')
class DeploymentDetailPage(AppDetailPage): def ManageDeployment(self, mov): # 启动/停止/重启服务 key = 'deploymentdetail_more_status_' + mov + '_loc' self.click_element(key) self.click_element('appdetail_assure_loc') # self.action_result('appdetail_' + mov + ' deployment', 'sign') return self.screenshot('appdetail_' + mov + 'deployment') def ManageLabel(self): pass def deployment_detail_action_result(self, testcase, appname, expectdata='none'): pass if __name__ == '__main__': login_test('admin', 'changeme') deploymentdetail = DeploymentDetailPage() event_log('case', 'deployment detail manage') deploymentdetail.click_element('sidebar_workloadlist_loc') deploymentdetail.click_element('sidebar_workload_deploymentlist_loc') deploymentdetail.click_element('deploymentlist_firstdeploy_loc') deploymentdetail.get_url() deploymentdetail.OpenTty() sleep(1) deploymentdetail.ChangeRc(3)