def test_chgMainOffer(self,dic): """商品主套餐变更""" logger.info("开始参数化......") accessNum = str(dic.get('ACCESS_NUM')) logger.info("测试号码:"+accessNum) offerId = str(dic.get('OFFER_ID')) logger.info("主套餐名称:" + offerId) subOfferList = dic.get('subOfferList') logger.info("可选子商品:" + subOfferList) logger.info('开始执行第{}个用例,测试数据:{}'.format(row,dic)) ##开始执行测试 test = OfferOperPage(self.driver) title = '个人商品订购测试记录' test.add_dochead(title) test.Open_SubOffer(accessNum, offerId) # 直接进入商品订购界面 time.sleep(20) ruleMsg = PageAssert(self.driver).assert_error() # ruleMsg = PageAssert(self.driver).check_BusiRule(file,row) logger.info('进入时校验:{}'.format(ruleMsg)) ruleMsg = offerId + ' ' + ruleMsg if '校验失败' in ruleMsg: write_xlsBycolName_append(file,row=row,colName='RULE_CHECK',value=ruleMsg) self.assertNotIn('校验失败',ruleMsg) time.sleep(5) test.choose_subOffer(subOfferList) # 可选商品列表 Loc_submit = (By.ID,'CSSUBMIT_BUTTON') test.screen_step('点击订购') test.find_element_click(Loc_submit) time.sleep(10) logger.info("处理页面返回信息.....") submitMsg = PageAssert(self.driver).assert_submitAfter(file=file,row=row) logger.info('业务受理信息:{}'.format(submitMsg)) test.screen_step('点击提交,受理信息:{}'.format(submitMsg)) test.save_docreport(title) self.assertIn('业务受理成功',submitMsg)
def test_GroupMenuSmoke(self, dic): '''集团业务菜单冒烟测试''' ##参数化 logger.info("开始参数化......") row = int(dic.get('NO')) # 标识行号,后续写入xls使用 groupId = '8721420770' cataMenuId = dic.get('PARENT_ID') #父菜单 menuId = dic.get('FUNC_CODE') #子菜单 MenuName = dic.get('NAME') #菜单名称 url = dic.get('VIEWNAME') #地址 logger.info('开始执行{}个菜单,菜单名:{},url:{}'.format(row, MenuName, url)) '''开始菜单冒烟测试''' test = BasePage(self.driver) test.Open_groupMenu(groupId=groupId, parentMenuId=cataMenuId, MenuId=menuId) logger.info('进入iframe.....') self.driver.switch_to.default_content() #记得一定要回到主窗口后再找iframe frame_str = "//iframe[contains(@src,'%s')]" % url logger.info('frame_str:{}'.format(frame_str)) loc_frame = (By.XPATH, frame_str) test.iframe(loc_frame) logger.info("进入{}frame:".format(MenuName)) # test.iframe(1) #默认进入 vaildMsg = test.vaild_GroupBusiAcceptTestRule() logger.info('进入菜单时校验信息:{}'.format(vaildMsg)) write_xlsBycolName_append(file=file_GroupMenu, row=row, colName='RESULT_INFO', value=vaildMsg, index=0) self.driver.close()
def test_PersonMenuSmoke(self, dic): '''个人菜单冒烟测试''' ##参数化 logger.info("开始参数化......") row = int(dic.get('NO')) # 标识行号,后续写入xls使用 accessNum = '13987274867' cataMenuId = dic.get('PARENT_ID') #父菜单 menuId = dic.get('FUNC_CODE') #子菜单 MenuName = dic.get('NAME') #菜单名称 url = dic.get('VIEWNAME') #地址 logger.info('开始执行{}个菜单,菜单名:{},url:{}'.format(row, MenuName, url)) '''开始菜单冒烟测试''' test = PersonBase(self.driver) test.Open_PersonMenu(accessNum, password='******', cataMenuId=cataMenuId, menuId=menuId) logger.info('进入iframe.....') self.driver.switch_to.default_content() #记得一定要回到主窗口后再找iframe frame_str = "//iframe[contains(@src,'%s')]" % url logger.info('frame_str:{}'.format(frame_str)) loc_frame = (By.XPATH, frame_str) test.iframe(loc_frame) logger.info("进入{}frame:".format(MenuName)) # test.iframe(1) #默认进入 vaildMsg = test.vaild_BusiRule() logger.info('进入菜单时校验信息:{}'.format(vaildMsg)) write_xlsBycolName_append(file=file_personMenu, row=row, colName='RESULT_INFO', value=vaildMsg, index=0) self.driver.close()
def check_BusiRule(self, file, row): '''业务规则校验,包括Error、Success、Warn、Help、Tips等各类Wade校验''' ruleMsg = self.assert_WadePage() if ('校验失败' in ruleMsg) or ('警告信息' in ruleMsg): write_xlsBycolName_append(file, row, 'RULE_CHECK', value=ruleMsg, index=0) logger.info('规则校验信息写入RULE_CHECK字段成功') else: ruleMsg = '业务规则校验通过' return ruleMsg
def write_vaildErrResult(self, file, row, index=0): ''' 测试结果写入xls,按xls模板已将flowId 和errmsg列指定了 :param file: xls完整路径 :param row: xls行号 :param index: xls的sheet页index :return: ''' Msg = self.assert_WadePage() if '业务校验失败' in Msg: logger.info("业务校验,错误信息写入xls中RESULT_INFO列") write_xlsBycolName_append(file, row, 'RESULT_INFO', Msg, index) #向xls模板指定行列写入结果 return Msg
def test_ChgUserPwd(self, dic): logger.info("开始参数化......") index = int(dic.get('NO')) logger.info('开始执行第{}个用例,接口入参:{}'.format(index, dic)) accessNum = str(dic.get('ACCESS_NUM')) logger.info("测试号码:" + accessNum) newPassword = dic.get('NEW_PWD') params = { "IS_INTERFACE": "1", "CHANGE_TYPE": "1", "ACCESS_NUM": accessNum, "NEW_PASSWORD": newPassword, "svcName": "OrderCentre.person.ISubscriberOperateSV.changeSubscriberPassword" } logger.info("开始构建请求......" + "\n") intf_url = rc.get_interface_url("url_interface") logger.info("接口测试地址:" + intf_url) intf_res = self.session.post(url=intf_url, headers=h, data=params) logger.info("接口完整返回信息:" + intf_res.content.decode(encoding='utf-8')) logger.info("处理接口返回数据....") d_intf_res = json.loads(intf_res.content.decode(encoding='utf-8')) x_resultcode = dict_get(d_intf_res, 'X_RESULTCODE', None) if x_resultcode == '0': flowid = dict_get(d_intf_res, 'flowId', None) logger.info("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum, flowid)) print("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum, flowid)) logger.info("开始写入结果xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='FLOWID', value=flowid) logger.info("测试结果写入xls成功......") else: x_resultinfo = dict_get(d_intf_res, 'x_resultinfo', None) logger.info("接口处理失败,错误信息:{}".format(x_resultinfo)) print("接口处理错误信息:" + x_resultinfo) logger.info("开始写入xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='RESULT_INFO', value=x_resultinfo) logger.info("测试结果写入xls成功......")
def test_acceptSubscriberOpen(self, dic): """个人用户开户""" logger.info("开始参数化......") # row = int(dic.get('NO')) #标识行号,后续写入xls使用 accessNum = str(dic.get('ACCESS_NUMBER')) simId = dic.get('ICC_ID') offerId = str(dic.get('OFFER_ID')) logger.info("开户号码:{},SIM卡号:{},主套餐:{}".format(accessNum, simId, offerId)) print("开户号码:{},SIM卡号:{},主套餐:{}".format(accessNum, simId, offerId)) logger.info('开始执行第{}个用例,测试数据:{}'.format(row, dic)) test = SubscriberOpen(self.driver) title = '个人用户开户受理测试记录' test.add_dochead(title) loc_commitAll = (By.XPATH, '//*[@id="CSSUBMIT_BUTTON"]') test.Open_subscriberOpen() # 进入开户页面 test.set_customerInfo(accessNum) # 设置客户信息 validMsg = test.Input_validSim(simId) #输入SIMID并校验 logger.info('SIM卡校验结果:{}'.format(validMsg)) if '业务校验失败' in validMsg: write_xlsBycolName_append(file=file, row=row, colName='RESULT_INFO', value=validMsg, index=0) #向xls模板指定行列写入结果 self.assertNotIn('业务校验失败', validMsg) #加个断点,验证sim是否校验通过 test.set_personMainOffer(offerId) #设置个人主套餐 test.set_Acctinfo() #设置账户信息 test.set_personPwd() #设置用户服务新密码 test.find_element_click(loc_commitAll) # 点击提交时校验服务密码 test.find_element_click(loc_commitAll) # 再次点击提交 time.sleep(10) #提交时如果发生异常,则将结果写入到xls vaildMsg = PageAssert(self.driver).write_vaildErrResult( file=file, row=row, index=0) #如果有错误就写入结果到xls self.assertNotIn('校验失败', vaildMsg) test.confirm_Payinfo() # 校验通过后再支付确认 submitMsg = PageAssert(self.driver).assert_submitAfter(file=file, row=row) print('===提交后页面返回信息:', submitMsg) test.screen_step('点击提交,受理信息:{}'.format(submitMsg)) # 点击确认支付后,页面返回的信息写入xls logger.info('写入测试结果到xls成功.....') test.save_docreport(title) self.assertIn('业务受理成功', submitMsg) self.driver.close()
def test_chgSvc(self, dic): """原子服务变更""" logger.info("开始参数化......") row = dic.get('NO') if not isinstance(row, int): row = int(row) accessNum = str(dic.get('ACCESS_NUM')) logger.info("测试号码:" + accessNum) offerId = str(dic.get('OFFER_ID')) logger.info("服务编码:" + offerId) subOfferList = dic.get('subOfferList') logger.info("可选子商品:" + subOfferList) logger.info('开始执行第{}个用例,测试数据:{}'.format(row, dic)) print('开始执行第{}个用例,测试数据:{}'.format(row, dic)) ##开始执行测试 test = OfferOperPage(self.driver) title = '服务变更订购测试记录' test.add_dochead(title) test.Open_SubOffer(accessNum, offerId) # 直接进入商品订购界面 ruleMsg = PageAssert(self.driver).assert_error() logger.info('进入时校验:{}'.format(ruleMsg)) ruleMsg = offerId + ' ' + ruleMsg if '校验失败' in ruleMsg: write_xlsBycolName_append(file, row=row, colName='RULE_CHECK', value=ruleMsg, index=1) self.assertNotIn('校验失败', ruleMsg) time.sleep(5) test.choose_subOffer(subOfferList) # 可选商品列表 # test.screen_step('点击订购') test.Btn_sub() logger.info("处理页面返回信息.....") time.sleep(5) submitMsg = test.assert_OfferOpersubmitAfter(file=file, row=row, index=1) logger.info('业务受理信息:{}'.format(submitMsg)) # test.screen_step('点击提交,受理信息:{}'.format(submitMsg)) test.save_docreport(title) self.assertIn('业务受理成功', submitMsg)
def test02_acceptDelMember(self, dic): '''删除共享成员''' logger.info("开始参数化......") # row = int(dic.get('NO')) #标识行号,后续写入xls使用 row = get_FuncRow('ShareClusterDelMeb') #标识行号,后续写入xls使用 print('开始执行第{}个用例,测试数据:{}'.format(row, dic)) logger.info('开始执行第{}个用例,测试数据:{}'.format(row, dic)) AccessNum = dic.get('ACCESS_NUM') #主卡号码 serialNum = dic.get('SERIAL_NUM') #副卡号码 #开始测试 test = ShareCluster(self.driver) title = '4G家庭共享套餐业务删除成员' test.add_dochead(title) loc_commit = (By.ID, 'CSSUBMIT_BUTTON') #提交按钮 test.Open_PersonMenu(AccessNum, password='******', cataMenuId='crm9400', menuId='crm4G10') #登录并进入主卡菜单 time.sleep(5) test.open_ShareClusterFrame() #进入iframe RuleMsg = test.vaild_BusiRule() #业务检查点(进入菜单时校验) print('4G家庭共享套餐业务提交前规则:{}'.format(RuleMsg)) logger.info('4G家庭共享套餐业务提交前规则:{}'.format(RuleMsg)) if '业务校验失败' in RuleMsg: write_xlsBycolName_append(file=file, row=row, colName='RESULT_INFO', value=RuleMsg, index=0) test.quit_browse() #业务规则校验失败,直接终止程序 test.screen_step('进入主卡操作菜单') test.del_MebAccessNum(serialNum) time.sleep(2) test.find_element_click(loc_commit) #点击提交 time.sleep(10) submitMsg = PageAssert(self.driver).assert_submitAfter( file=file, row=row, index=0) #写入结果到xls logger.info('业务受理信息:{}'.format(submitMsg)) test.screen_step('点击提交,受理信息:{}'.format(submitMsg)) test.save_docreport(title) self.assertIn('业务受理成功', submitMsg)
def test_modifyRealChkInfo(self,dic): logger.info("开始参数化......") index = int(dic.get('NO')) logger.info('开始执行第{}个用例,接口入参:{}'.format(index,dic)) accessNum = str(dic.get('ACCESS_NUM')) logger.info("测试号码:"+accessNum) custId = str(dic.get('CUST_ID')) IdenId= str(dic.get('IDEN_ID')) custName = GenTestData().create_CustName() #随机生成姓名 psptId = GenTestData().Create_Idcard() #随机身份证号码 # logger.info('证件号码:{}'.format(psptId)) write_xlsBycolName_append(file=file,row=index,colName='NEWCUSTNAME',value=custName) write_xlsBycolName_append(file=file,row=index,colName='NEW_IDENID',value=psptId) params = { "CUSTINFO_PSPT_ID": psptId, # 证件号先写死这个 "SERIAL_NUMBER": accessNum, "PARTY_ID": custId, "CUSTINFO_PSPT_ADDRESS": "测试地址测试地址11", "ACCESS_NUM": accessNum, "CUSTINFO_PSPT_TYPE_CODE": "10000000", #10000000表示身份证 "svcName": "CustomerCentre.custmgr.IPersonOperateSV.modifyRealNameCheckInInfo", "IDEN_ID": IdenId, "CUST_ID": accessNum, "CUSTINFO_CUST_NAME": custName } logger.info("开始构建请求......"+"\n") intf_url = rc.get_interface_url("url_interface") logger.info("接口测试地址:" + intf_url ) intf_res = self.session.post(url=intf_url,headers = h, data = params) logger.info("接口完整返回信息:" + intf_res.content.decode(encoding='utf-8')) logger.info("处理接口返回数据....") d_intf_res = json.loads(intf_res.content.decode(encoding='utf-8')) x_resultcode = dict_get(d_intf_res, 'X_RESULTCODE', None) if x_resultcode == '0': flowid = dict_get(d_intf_res, 'INTACT_ID', None) logger.info("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum,flowid)) print("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum,flowid)) logger.info("开始写入结果xls数据......") write_xlsBycolName_append(file=self.file, row=index,colName='FLOWID', value=flowid) logger.info("测试结果写入xls成功......") else: x_resultinfo = dict_get(d_intf_res, 'x_resultinfo', None) logger.info("接口处理失败,错误信息:{}".format(x_resultinfo)) print("接口处理错误信息:" + x_resultinfo) logger.info("开始写入xls数据......") write_xlsBycolName_append(file=self.file, row=index,colName='RESULT_INFO', value=x_resultinfo) logger.info("测试结果写入xls成功......")
def test_IntfChgprodstatus(self, dic): '''【接口】停开机业务受理测试''' logger.info("开始参数化......") index = int(dic.get('NO')) accessNum = str(dic.get('ACCESS_NUM')) logger.info("测试号码:" + accessNum) busicode = dic.get('BUSICODE') logger.info("停开机业务类型:" + busicode) params = { "svcName": 'OrderCentre.person.IChangeProdStaOperateSV.changeProdStatus', "ACCESS_NUM": accessNum, "BUSI_ITEM_CODE": busicode } logger.info("params参数化以后的接口入参:" + json.dumps(params)) print("params参数化以后的接口入参:" + json.dumps(params)) # logger.info("开始接口测试开始,接口名为"+svcname +" 接口参数是:" + json.dumps(params)) logger.info('开始执行第{}个用例,接口入参:{}'.format(index, dic)) logger.info("开始构建请求......" + "\n") intf_url = rc.get_interface_url("url_interface") logger.info("接口测试地址:" + intf_url) intf_res = self.session.post(url=intf_url, headers=h, data=params) logger.info("接口完整返回信息:" + intf_res.content.decode(encoding='utf-8')) d_intf_res = json.loads(intf_res.content.decode(encoding='utf-8')) x_resultcode = dict_get(d_intf_res, 'x_resultcode', None) if x_resultcode == '0': flowid = dict_get(d_intf_res, 'flowId', None) access_num = dict_get(d_intf_res, 'ACCESS_NUM', None) x_resultinfo = dict_get(d_intf_res, 'X_RESULTINFO', None) logger.info("接口处理成功,受理号码为:" + access_num + " 订单交互流水号:" + flowid) print("接口处理成功,受理号码为:" + access_num + " 订单交互流水号:" + flowid) logger.info("开始写入xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='RESULT_INFO', value=x_resultinfo) write_xlsBycolName_append(file=self.file, row=index, colName='FLOWID', value=flowid) logger.info("测试结果写入xls成功......") else: x_resultinfo = dict_get(d_intf_res, 'x_resultinfo', None) logger.info("接口调用失败,错误信息:" + x_resultinfo) print("接口处理错误信息:" + x_resultinfo) logger.info("开始写入xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='RESULT_INFO', value=x_resultinfo) logger.info("测试结果写入xls成功......") self.assertEqual(x_resultcode, '0')
def assert_submitAfter(self, file, row, index=0): ''' 测试结果写入xls,按xls模板已将flowId 和errmsg列指定了 :param file: xls完整路径 :param row: xls行号 :param index: xls的sheet页index :return: ''' try: Msg = self.assert_Submit() if '业务受理成功' in Msg: logger.info("业务受理成功,交互流水号写入xls中FLOWID列") write_xlsBycolName_append(file, row, 'FLOWID', Msg, index) #向xls模板指定行列写入结果 elif '业务受理失败' in Msg: logger.info("业务受理失败,错误信息写入xls中RESULT_INFO列") write_xlsBycolName_append(file, row, 'RESULT_INFO', Msg, index) #向xls模板指定行列写入结果 except: logger.info("测试结果写入xls发生异常!") Msg = '测试异常' write_xlsBycolName_append(file, row, 'RESULT_INFO', '测试异常', index) # 向xls模板指定行列写入结果 return Msg
def test_ChgMainAndShare(self, dic): '''主套餐共享受理''' logger.info("开始参数化......") index = int(dic.get('NO')) logger.info('开始执行第{}个用例,接口入参:{}'.format(index, dic)) accessNum = str(dic.get('ACCESS_NUM')) logger.info("主卡:" + accessNum) VICE_ACCESS_NUM = dic.get('VICE_ACCESS_NUM') logger.info("副卡:" + VICE_ACCESS_NUM) body = { "OFFERS": json.dumps([{ "ENABLE_MODE": "4", "OFFER_ID": "99091283", "OFFER_LIST": [{ "OFFER_ID": "199999999", "ACTION": "0", "ROLE_ID": "999999999" }, { "OFFER_ID": "100000000", "ACTION": "0", "ROLE_ID": "999999999" }, { "OFFER_ID": "100000023", "ACTION": "0", "ROLE_ID": "999999999" }], "ACTION": "0", "OFFER_TYPE": "00" }, { "OFFER_ID": "100000001", "ACTION": "0" }, { "OFFER_ID": "100000200", "ACTION": "0" }]), "SELECTED_OFFER_VALUE": json.dumps([{ "OFFER_ID": "99091283", "ACTION": "0", "ENABLE_MODE": "4", "OFFER_TYPE": "00", "OFFER_LIST": [{ "OFFER_ID": "199999999", "ROLE_ID": "999999999", "ACTION": "0" }, { "OFFER_ID": "100000000", "ROLE_ID": "999999999", "ACTION": "0" }, { "OFFER_ID": "100000023", "ROLE_ID": "999999999", "ACTION": "0" }] }, { "OFFER_ID": "100000001", "ACTION": "0" }, { "OFFER_ID": "100000200", "ACTION": "0" }]), "ACCESS_NUM": accessNum, "SELECTED_OFFER_NAME": "4G飞享138元全国套餐", "MENU_ID": "crm4G12", "LOGIN_TYPE_CODE": "|P", "SELECTED_ACTIVE_NAME": "", "SUBMIT_TYPE": "0", # "page": "oc.person.cs.ChangeMainAndShare", "VICE_ACCESS_NUM": VICE_ACCESS_NUM, # "IDENTITYAUTH_LOG_ID": "", # "service": "ajax", # "listener": "onTradeSubmit", "BILLING_CODES": "99091283", "CHANGE_MAIN_AND_SHARE": "TRUE" } params = { "svcName": "OrderCentre.person.IChangeMainAndShareSV.changeMainAndShare" } params.update(body) print('请求参数:{}'.format(params)) logger.info("开始构建请求......" + "\n") intf_url = rc.get_interface_url("url_interface") logger.info("接口测试地址:" + intf_url) intf_res = self.session.post(url=intf_url, headers=h, data=params) logger.info("接口完整返回信息:" + intf_res.content.decode(encoding='utf-8')) logger.info("处理接口返回数据....") d_intf_res = json.loads(intf_res.content.decode(encoding='utf-8')) x_resultcode = dict_get(d_intf_res, 'X_RESULTCODE', None) if x_resultcode == '0': flowid = dict_get(d_intf_res, 'flowId', None) logger.info("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum, flowid)) print("接口处理成功,受理号码为:{},订单交互流水号:{}".format(accessNum, flowid)) logger.info("开始写入结果xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='FLOWID', value=flowid) logger.info("测试结果写入xls成功......") else: x_resultinfo = dict_get(d_intf_res, 'x_resultinfo', None) logger.info("接口处理失败,错误信息:{}".format(x_resultinfo)) print("接口处理错误信息:" + x_resultinfo) logger.info("开始写入xls数据......") write_xlsBycolName_append(file=self.file, row=index, colName='RESULT_INFO', value=x_resultinfo) logger.info("测试结果写入xls成功......")