def test_1123(): """正退不生成扣回业绩""" # describe:出租合同正退终止结算生成扣回业绩,记录同步到预估业绩排行榜 # data:1、出租合同状态为有效;2、出租合同审核状态为已复审;3、应收扣回金大于0;4、应收转租费大于0 # result:1、合同状态变为正退;2、不生成扣回业绩; fileName = 'apartmentAchievement_1123' contractSql = "SELECT contract_num,rent_end_date,date(sysdate()) from apartment_contract where deleted = 0 and city_code = 330100 and audit_status = 'APPROVED' and contract_status = 'EFFECTIVE' " \ "and contract_type = 'NEWSIGN' and entrust_type = 'SHARE' and payment_type<>'NETWORKBANK' and rent_end_date>DATE_ADD(date(SYSDATE()),INTERVAL 1 MONTH)order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机出租合同 %s 做正退终止' % (fileName, contractNum)) with Base() as base: breach_money = '888.88' # 应收违约金 zhuanzu_money = '666.66' # 转租费 base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text(apartmentContractEndPage.addContractEndMould['contract_num_loc'], contractNum) # 输入合同编 base.click(apartmentContractEndPage.addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage.addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage.addContractEndMould['tr_contract']) # 右击第一条数据 base.click(apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 base.click(apartmentContractEndPage.addContractEndMould['now_end_loc']) # 立即终止 endNum = 'AutoACE' + '-' + time.strftime('%m%d%H%M') base.input_text(apartmentContractEndPage.addContractEndMould['end_num_loc'], endNum) # 终止协议号 base.type_date(apartmentContractEndPage.typeMould['end_date'], info[1]) # 终止日期:承租到期日 base.type_select(apartmentContractEndPage.typeMould['end_type'], 'RETREATING') # 正退 base.input_text(apartmentContractEndPage.addContractEndMould['end_reason_loc'], u'承租周期已完') # 终止原因 base.type_select(apartmentContractEndPage.typeMould['receipt_type_loc'], 'PAYER') # 承租人 base.type_select(apartmentContractEndPage.typeMould['pay_type_loc'], 'PERSONAL') # 个人 base.input_text(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], '123456789') # 收款卡号 base.send_keys(apartmentContractEndPage.addContractEndMould['receipt_num_loc'], Keys.ENTER) base.click(apartmentContractEndPage.addContractEndMould['cardconfirm_close_loc']) # 银行卡确认无误 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=12) # 违约金 base.input_text(apartmentContractEndPage.addContractEndMould['receivable_money_loc'], breach_money) # 应收违约金 base.dblclick(apartmentContractEndPage.addContractEndMould['weiyuejin_loc'], index=21) # 转租费 base.input_text(apartmentContractEndPage.addContractEndMould['zhuanzu_money_loc'], zhuanzu_money) # 应收转租金 base.input_text(apartmentContractEndPage.addContractEndMould['remark_loc'], 'AutoTest') # 备注 base.click(apartmentContractEndPage.addContractEndMould['submit_button']) # 提交 base.check_submit() # 等待提交完成 contractEndAdd = "SELECT ace.end_contract_num FROM apartment_contract ac,apartment_contract_end ace WHERE ac.contract_id = ace.contract_id " \ "and ace.audit_status='NO_AUDIT' AND ace.end_type='RETREATING'and ace.deleted=0 and ac.contract_num='%s'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.waitData(contractEndAdd, 1)).is_true(), 1123, u'%s:出租合同 %s 终止结算新增异常,执行SQL:%s' % (fileName, contractNum, contractEndAdd)) # 合同状态检查 contractStatus = sqlbase.serach( "select contract_status from apartment_contract where deleted = 0 and contract_num='%s' " % contractNum)[0] base.diffAssert(lambda test: asserts(contractStatus).is_equal_to('RETREATING'), 1123, u'%s:出租合同 %s 终止结算后状态异常异常,期望值 RETREATING 实际值 %s' % (fileName, contractNum, contractStatus)) # 扣回业绩检查 time.sleep(10) # 业绩生成有时间延迟,这里等待10秒 backAchievementSql = "select is_active,achieve_id,accounting_time from back_achievement where contract_num='%s' and deleted=0 " % contractNum base.diffAssert(lambda test: asserts(sqlbase.get_count(backAchievementSql)).is_equal_to(0), 1123, u'%s:出租合同 %s 正退终止有扣回业绩生成,业务异常' % (fileName, contractNum))
def auditReimbuisement(): """审核报销单""" try: base=Base() base.open(page.reimbursementExpenseListPage, reimbuisementPage.searchMould['tr_reimbuisement'], havaFrame=False) #配置文件读取报销单信息 expenseNum = get_conf('houseInfo', 'apartmentReimbursementNum') sql = "SELECT * from reimbursement_expense where expense_num = '%s' and deleted = 0" % expenseNum.encode( 'utf-8') consoleLog(u'查询是否存在测试房源的报销单') if sqlbase.get_count(sql) > 0: base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: sql = "SELECT rr.expense_num from reimbursement_expense rr INNER JOIN house hh on rr.house_id = hh.house_id where hh.city_code = 330100 " \ "and rr.deleted = 0 and rr.audit_status = 'NO_AUDIT' limit 1" consoleLog(u'未找到测试房源的报销单,随机查找报销单做审核操作') if sqlbase.get_count(sql) > 0: expenseNum = sqlbase.serach(sql)[0] base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum);consoleLog(u'输入报销单:%s' % expenseNum) else: consoleLog(u'未找到符合条件的报销单,跳过审核用例') return base.click(reimbuisementPage.searchMould['search_button']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['bohui_loc']) base.input_text(reimbuisementPage.editMould['audit_content'], 'AutoTest') base.click(reimbuisementPage.editMould['audit_confirm']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['chushen_loc']) base.click(reimbuisementPage.editMould['audit_confirm']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['fushen_loc']) base.click(reimbuisementPage.editMould['audit_confirm']) base.check_submit() base.click(reimbuisementPage.editMould['payment_button'], index=0) base.click(reimbuisementPage.editMould['payment_type'], index=0) base.input_text(reimbuisementPage.editMould['payment_remark'], 'AutoTest') base.click(reimbuisementPage.editMould['payment_save']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['payment_audit']) base.click(reimbuisementPage.editMould['payment_audit_save']) consoleLog(u'报销单 %s 审核成功' % expenseNum) finally: base.driver.quit()
def test_1105(): """已终止委托做终止结算""" # describe:委托合同已终止,再做中直接算会提示不可终止 # data:1.合同已终止 # result:1. 终止结算提交失败 fileName = 'apartmentContract_1105' contractSql = "select contract_num from house_contract hc where EXISTS (select * from house_contract_end hce where hce.contract_id=hc.contract_id and hce.deleted=0) " \ "and deleted=0 and city_code=330100 and contract_id not in (select hc.contract_id from apartment a,apartment_contract ac,house_contract hc where hc.contract_id=a.house_contract_id " \ "and a.house_id=ac.house_id and ac.real_due_date>NOW())order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机已终止委托合同 %s 做终止结算' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractEndPage.addContractEndMould['tr_contract']) base.input_text(houseContractEndPage.searchMould['contract_num_loc'], contractNum) # 输入合同号 base.click(houseContractEndPage.searchMould['contract_search_button_loc']) # 搜索 base.staleness_of(houseContractEndPage.addContractEndMould['tr_contract']) # 等待数据刷新 base.context_click(houseContractEndPage.addContractEndMould['tr_contract']) # 右击第一条数据 base.click(houseContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'该委托合同已结算过' base.diffAssert(lambda test: asserts(message).is_equal_to(messagehope),1105, u'%s:委托合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def auditApartmentContract(): """删除核出租合同终止结算""" try: base = Base() base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end'], havaFrame=False) contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0 and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) else: consoleLog(u'未找到出租合同终止结算的测试数据,跳过删除用例', level='w') return base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) base.click( apartmentContractEndPage.addContractEndMould['delete_button']) base.click(apartmentContractEndPage. addContractEndMould['delete_button_confirm']) base.check_submit() consoleLog(u'出租合同 %s 终止结算删除成功' % contractNum) finally: base.driver.quit()
def test_1007(): """租合同周期在跟前合同的周期重叠""" # describe:租合同周期在跟前合同的周期重叠,提示时间段被占用 # data:有过出租合同且当前状态为待租的房源,新增出租合同时间在前合同的承租周期内 # result:合同创建失败 fileName = 'apartmentContract_1007' searchSql = "SELECT a.apartment_code,hc.contract_num,ac.contract_num,date_sub(date(ac.real_due_date), interval 2 DAY) FROM apartment a INNER JOIN house_contract hc " \ "ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' AND hc.deleted = 0 AND hc.audit_status='APPROVED' AND hc.contract_status = 'EFFECTIVE'" \ "INNER JOIN apartment_contract_relation acr on a.apartment_id=acr.apartment_id INNER JOIN apartment_contract ac on ac.contract_id=acr.contract_id and ac.deleted=0 " \ "WHERE a.apartment_id=acr.apartment_id and a.deleted = 0 AND a.rent_price > 0 AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND a.rent_status='WAITING_RENT' order by rand() limit 1" if sqlbase.get_count(searchSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % searchSql) return info = sqlbase.serach(searchSql) apartmentCode = info[0] consoleLog(u'%s:取随机房源 %s 做签约' %(fileName, apartmentCode)) signDate = info[3] with Base() as base: base.open(page.customerListPage, apartmentContractPage.customerSignMould['tr_customer']) try: base.find_element(By.ID, 'search_btn').click() base.staleness_of(apartmentContractPage.customerSignMould['tr_customer']) # 搜索等待列表刷新 except: base.click((By.CSS_SELECTOR, '.panel.window > div:nth-child(1) > div.panel-tool > a')) # 可能会有分配租客的弹窗出现,此为关闭 customerCode = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"customer_num\"] > div > font').text();return a", True).decode('utf-8') # 获取第一条数据编号 base.input_text(apartmentContractPage.customerSignMould['search_customer_name_loc'], customerCode) base.click(apartmentContractPage.customerSignMould['search_button_loc']) base.staleness_of(apartmentContractPage.customerSignMould['tr_customer']) base.script("$('button#edit_btn')[2].click()") # 点击列表页第一行的签约 consoleLog(u'使用房源 %s 签约出租合同' % apartmentCode) base.click(apartmentContractPage.customerSignMould['share']) # 点合租 base.input_text(apartmentContractPage.customerSignMould['search_apartment_loc'], apartmentCode) # 房源编号 base.click(apartmentContractPage.customerSignMould['house_search_btn']) base.staleness_of(apartmentContractPage.customerSignMould['apartment_loc']) base.dblclick(apartmentContractPage.customerSignMould['apartment_loc']) # 对查询结果的第一条房源数据双击发起签约 base.click(apartmentContractPage.customerSignMould['newsign_button_loc']) # 新签 contractNum = 'AutoTest' + '-' + time.strftime('%m%d%H%M%S') # 定义合同编号 randomHouseContract = sqlbase.serach( "SELECT entrust_start_date,entrust_end_date,date(sysdate()) from house_contract where contract_num = '%s'" % info[1]) # 获取房源合同时间元素 base.input_text(apartmentContractPage.addApartmentContractMould['contract_num_loc'], contractNum) # 合同编号 base.type_date(apartmentContractPage.typeMould['sign_date'], signDate) # 签约日期 base.type_date(apartmentContractPage.typeMould['rent_start_date'], signDate) # 承租起算日 base.type_date(apartmentContractPage.typeMould['rent_end_date'], randomHouseContract[1]) # 承租到期日 time.sleep(3) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) if message != '': messagehope = u'该时间段被合同号%s占用' % info[2] base.diffAssert(lambda test: asserts(message).is_equal_to(messagehope), 1007, u'%s:页面信息提示不正确,期望值 %s 实际值 %s' % (fileName, messagehope, message)) else: consoleLog(u'页面信息获取失败', 'e') return
def test(): """出租合同续签超过可续签日期""" # describe:检出租合同续签超过可续签日期,不可签约 # data:1.合同应收款项全部已审;2.承租到期日>委托合同到期日+延长期 # result:续签合同失败 contractSql = "SELECT ac.contract_num,cp.urgent_customer_name,cp.customer_name from apartment_contract ac inner join customer_person cp on ac.person_id=cp.person_id " \ "where ac.deleted = 0 and ac.city_code = '330100' and ac.entrust_type='SHARE' and ac.audit_status = 'AUDIT' and ac.contract_status = 'EFFECTIVE' " \ "and ac.deleted=0 and payment_type='NORMAL' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'SQL查无数据!', level='w') consoleLog(u'执行SQL:%s' % contractSql.encode('utf-8')) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'取随机合同 %s 做续签' % contractNum) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.click( (apartmentContractPage.searchContractMould['resign_loc'])) # 续签
def addHouseContact(): """审核委托合同""" try: base = Base() base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract'], havaFrame=False) #配置文件读取合同编号 contractNum = get_conf('houseContractInfo', 'contractNum') sql = "SELECT * from house_contract WHERE contract_num = '%s' and deleted = 0" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) != 0: base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click( houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of( houseContractPage.contractSearchMould['tr_contract']) base.click( houseContractPage.addHouseContractMould['delete_button']) base.click(houseContractPage. addHouseContractMould['delete_button_confirm']) base.check_submit() consoleLog(u'委托合同删除成功') else: consoleLog(u'未找到委托合同 %s,略过删除功能' % contractNum) finally: base.driver.quit()
def addHouseContact(): """审核委托合同""" try: base=Base() base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract'], havaFrame=False) #配置文件读取委托合同信息 contractNum = get_conf('houseContractInfo', 'contractNum');if contractNum!=None:consoleLog(u'配置文件中获得委托合同编号:%s'%contractNum) sql = "SELECT audit_status from house_contract where contract_num = '%s' and deleted = 0" % contractNum.encode('utf-8') if sqlbase.get_count(sql) > 0: if sqlbase.serach(sql)[0] == 'AUDIT': pass else: base.input_text(houseContractPage.houseSearchMould['status'], 'AUDIT')#待审核 base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) contractNum = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"contract_num\"] > div').text();return a", True).decode('utf-8') consoleLog(u'使用随机委托合同:%s 做审核操作' % contractNum, level='w') else: base.input_text(houseContractPage.houseSearchMould['status'], 'AUDIT') base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) contractNum = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"contract_num\"] > div').text();return a", True).decode( 'utf-8') consoleLog(u'使用随机委托合同:%s 做审核操作' % contractNum, level='w') base.input_text(houseContractPage.houseSearchMould['status'], '') base.input_text(houseContractPage.contractSearchMould['contract_num_loc'], contractNum);consoleLog(u'实际审核委托合同编号:%s' % contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 驳回 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'REJECTED\']")[1].click()') base.input_text(houseContractPage.addHouseContractMould['contract_audit_content'], u'自动化测试审核数据') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 审核租金 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=1) base.click(houseContractPage.addHouseContractMould['rent_detail_selectAll']) base.click(houseContractPage.addHouseContractMould['rent_audit_loc']) base.click(houseContractPage.addHouseContractMould['audit_pass_loc']) base.click(houseContractPage.addHouseContractMould['rent_audit_confirm']) # 初审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'PASS\']")[2].click()') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.dblclick(houseContractPage.contractSearchMould['tr_contract'], checkLoc=houseContractPage.addHouseContractMould['contract_num_loc']) # 复审 base.click(houseContractPage.addHouseContractMould['tab_info_loc'], index=3) base.script('$("button[status=\'APPROVED\']")[1].click()') base.click(houseContractPage.addHouseContractMould['contract_audit_confirm']) base.check_submit() consoleLog(u'委托合同:%s 审核成功' % contractNum) finally: base.driver.quit()
def test_1110(): """委托终止结算已审核删除""" # describe:委托终止结算已审核的删除失败 # data:1、委托终止结算已审核 # result:1、删除失败 fileName = 'apartmentContract_1110' contractSql = "select hc.contract_num from house_contract_end hce,house_contract hc where hc.contract_id=hce.contract_id and hce.deleted=0 and hce.audit_status='REVIEW' " \ "and hc.city_code=330100 order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取合同 %s 终止结算做审核' % (fileName, contractNum)) with Base() as base: # 删除终止结算 base.open(page.contractEndPage, houseContractEndPage.searchMould['contract_search_button_loc']) base.click(houseContractEndPage.addContractEndMould['tab_info'], index=1) base.input_text(houseContractEndPage.searchMould['end_contract_num_loc'], contractNum) base.click(houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of(houseContractEndPage.searchMould['tr_contract_end']) base.click(houseContractEndPage.addContractEndMould['delete_button']) base.click(houseContractEndPage.addContractEndMould['delete_button_confirm']) time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'终止结算已审核,不可删除' base.diffAssert(lambda test: asserts(message).contains(messagehope),1110, u'%s:委托合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1003(): """出租合同起算日小于委托合同签约日""" # describe:出租合同承租起算日不在委托合同周期内,合同签约失败 # data:出租合同起算日小于委托合同签约日 # result:签约失败 fileName = 'apartmentContract_1003' randomApartment = "SELECT a.apartment_code,a.apartment_id,hc.contract_num,hc.contract_id FROM apartment a INNER JOIN house_contract hc ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' " \ "AND hc.deleted = 0 AND hc.contract_status = 'EFFECTIVE'WHERE a.deleted = 0 AND a.rent_price > 0 AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND a.rent_status='WAITING_RENT'" \ "AND hc.apartment_type='BRAND'AND hc.sign_date>date_sub(date(sysdate()), interval 6 month) and not EXISTS (select * from apartment_contract ac,apartment_contract_relation acr " \ "where ac.contract_id=acr.contract_id and a.apartment_id=acr.apartment_id) and EXISTS (select * from query_apartment qa where qa.apartment_code=a.apartment_code) ORDER BY RAND() LIMIT 1" if sqlbase.get_count(randomApartment) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % randomApartment) return info = sqlbase.serach(randomApartment) apartmentCode = info[0] consoleLog(u'%s:使用房源 %s 签约出租合同' % (fileName, apartmentCode)) with Base() as base: base.open(page.customerListPage, apartmentContractPage.customerSignMould['tr_customer']) try: base.find_element(By.ID, 'search_btn').click() base.staleness_of(apartmentContractPage.customerSignMould['tr_customer']) # 搜索等待列表刷新 except: base.click((By.CSS_SELECTOR, '.panel.window > div:nth-child(1) > div.panel-tool > a')) # 可能会有分配租客的弹窗出现,此为关闭 customerCode = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"customer_num\"] > div > font').text();return a", True) # 获取第一条数据编号 base.input_text(apartmentContractPage.customerSignMould['search_customer_name_loc'], customerCode) base.click(apartmentContractPage.customerSignMould['search_button_loc']) base.staleness_of(apartmentContractPage.customerSignMould['tr_customer']) base.script("$('button#edit_btn')[2].click()") # 点击列表页第一行的签约 base.click(apartmentContractPage.customerSignMould['share']) # 点合租 base.input_text(apartmentContractPage.customerSignMould['search_apartment_loc'], apartmentCode) # 房源编号 base.click(apartmentContractPage.customerSignMould['house_search_btn']) base.staleness_of(apartmentContractPage.customerSignMould['apartment_loc']) try: base.dblclick(apartmentContractPage.customerSignMould['apartment_loc'], checkLoc=apartmentContractPage.addApartmentContractMould[ 'contract_num_loc']) # 对查询结果的第一条房源数据双击发起签约 except: base.click(apartmentContractPage.customerSignMould['newsign_button_loc']) # 新签 contractNum = 'AutoTest' + '-' + time.strftime('%m%d%H%M%S') # 定义合同编号 randomHouseContract = sqlbase.serach( "SELECT entrust_start_date,entrust_end_date,date(sysdate()),date_add(date(sysdate()), interval 1 DAY),date_sub(date(sysdate()), interval 6 month) " "from house_contract where contract_num = '%s'" % info[2]) # 获取房源合同时间元素 base.input_text(apartmentContractPage.addApartmentContractMould['contract_num_loc'], contractNum) # 合同编号 base.type_date(apartmentContractPage.typeMould['sign_date'], randomHouseContract[4]) # 签约日期 base.type_date(apartmentContractPage.typeMould['rent_start_date'], randomHouseContract[4]) # 承租起算日 base.type_date(apartmentContractPage.typeMould['rent_end_date'], randomHouseContract[2]) # 承租到期日 time.sleep(3) message = base.script("var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) if message is not None: messagehope = u'承租开始日期没到委托合同开始日' base.diffAssert(lambda test: asserts(message).is_equal_to(messagehope), 1003, u'%s:出租合同 %s 新增提交异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message)) else: consoleLog(u'%s:页面信息获取失败' % fileName, 'e')
def test_1005(): """未定价房源签约""" # describe:房源签完委托合同未定价,合同签约失败 # data:未定价的房源 # result:签约失败 fileName = 'apartmentContract_1005' randomApartment = "SELECT a.apartment_code,a.apartment_id,hc.contract_num,hc.contract_id FROM apartment a INNER JOIN house_contract hc " \ "ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' AND hc.deleted = 0 AND hc.audit_status='APPROVED' AND hc.contract_status = 'EFFECTIVE' " \ "INNER JOIN fitment_house fh on fh.house_id=hc.house_id AND fh.fitment_status='HANDOVER' inner join query_apartment qa on qa.apartment_code=a.apartment_code " \ "WHERE a.deleted = 0 AND a.rent_price IS NULL AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND a.rent_status='WAITING_RENT'ORDER BY RAND() LIMIT 1" if sqlbase.get_count(randomApartment) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % randomApartment) return info = sqlbase.serach(randomApartment) apartmentCode = info[0] consoleLog(u'%s:使用房源 %s 签约出租合同' % (fileName, apartmentCode)) with Base() as base: base.open(page.customerListPage, apartmentContractPage.customerSignMould['tr_customer']) try: base.find_element(By.ID, 'search_btn').click() base.staleness_of(apartmentContractPage. customerSignMould['tr_customer']) # 搜索等待列表刷新 except: base.click((By.CSS_SELECTOR, '.panel.window > div:nth-child(1) > div.panel-tool > a' )) # 可能会有分配租客的弹窗出现,此为关闭 customerCode = base.script( "var a = $('[datagrid-row-index=\"0\"] > [field=\"customer_num\"] > div > font').text();return a", True) # 获取第一条数据编号 base.input_text( apartmentContractPage. customerSignMould['search_customer_name_loc'], customerCode) base.click( apartmentContractPage.customerSignMould['search_button_loc']) base.staleness_of( apartmentContractPage.customerSignMould['tr_customer']) base.script("$('button#edit_btn')[2].click()") # 点击列表页第一行的签约 base.click(apartmentContractPage.customerSignMould['share']) # 点合租 base.input_text( apartmentContractPage.customerSignMould['search_apartment_loc'], apartmentCode) # 房源编号 base.click(apartmentContractPage.customerSignMould['house_search_btn']) base.staleness_of( apartmentContractPage.customerSignMould['apartment_loc']) base.dblclick(apartmentContractPage.customerSignMould['apartment_loc'] ) # 对查询结果的第一条房源数据双击发起签约 time.sleep(1) message = base.script( "var a = $('.bootstrap-growl.alert.alert-info.alert-dismissible').text();return a", True) messsagehope = u'房源未定价,找房源方' base.diffAssert(lambda test: asserts(message).contains(messsagehope), 1005, u'%s:未定价房源 %s 签约异常' % (fileName, apartmentCode))
def deleteReimbuisement(): """删除报销单""" try: base = Base() base.open(page.reimbursementExpenseListPage, reimbuisementPage.searchMould['tr_reimbuisement'], havaFrame=False) #配置文件读取报销单信息 expenseNum = get_conf('houseInfo', 'apartmentReimbursementNum') sql = "SELECT * from reimbursement_expense where expense_num = '%s' and deleted = 0" % expenseNum.encode( 'utf-8') consoleLog(u'查询是否存在测试房源的报销单') if sqlbase.get_count(sql) > 0: base.input_text(reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: sql = "SELECT rr.expense_num from reimbursement_expense rr INNER JOIN house hh on rr.house_id = hh.house_id where hh.city_code = 330100 " \ "and rr.deleted = 0 limit 1" consoleLog(u'未找到测试房源的报销单,随机查找报销单做删除操作') if sqlbase.get_count(sql) > 0: expenseNum = sqlbase.serach(sql)[0] base.input_text( reimbuisementPage.searchMould['expenseNum_loc'], expenseNum) else: consoleLog(u'未找到符合条件的报销单,跳过删除用例') return base.click(reimbuisementPage.searchMould['search_button']) base.staleness_of(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['reset_button']) base.click(reimbuisementPage.editMould['alert_confirm']) base.check_submit() base.dblclick(reimbuisementPage.searchMould['tr_reimbuisement']) base.click(reimbuisementPage.editMould['fanshen_loc']) base.input_text(reimbuisementPage.editMould['audit_content'], 'AutoTest') base.click(reimbuisementPage.editMould['audit_confirm']) base.check_submit() base.click(reimbuisementPage.editMould['delete_button']) base.click(reimbuisementPage.editMould['alert_confirm']) consoleLog(u'报销单 %s 删除成功' % expenseNum) finally: base.driver.quit()
def addReimbursement(): """新增报销单""" try: base = Base() base.open(page.apartmentPage, apartmentPage.apartmentMould['tr_apartment']) # 配置文件中读取房源 apartmentCode = get_conf('houseInfo', 'apartmentcode') consoleLog(u'确认房源 %s 是否存在' % apartmentCode) sql = "SELECT * from apartment where apartment_code = '%s' and deleted = 0 and is_active = 'Y'" % apartmentCode.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentPage.apartmentMould['residential_name'], apartmentCode) else: sql = "SELECT apartment_code from apartment where deleted = 0 and is_active = 'Y' and city_code = '330100' LIMIT 1" apartmentCode = sqlbase.serach(sql)[0] base.input_text(apartmentPage.apartmentMould['residential_name'], apartmentCode) base.click(apartmentPage.apartmentMould['search_btn']) base.staleness_of(apartmentPage.apartmentMould['tr_apartment']) base.click(apartmentPage.apartmentMould['details_btn']) base.click(apartmentPage.apartmentMould['expense_btn']) # 报销费用 base.input_text(apartmentPage.apartmentMould['memo'], u'报销单自动化测试备注') base.type_select(apartmentPage.typeMould['item_type'], 'WATER') base.type_select(apartmentPage.typeMould['bear_type'], 'COMPANY') base.input_text(apartmentPage.apartmentMould['amount'], '666') base.type_date(apartmentPage.typeMould['start_date'], u'2017-08-08') base.type_date(apartmentPage.typeMould['end_date'], u'2017-08-28') base.type_select(apartmentPage.typeMould['vacant'], 'Y') base.type_select(apartmentPage.typeMould['first'], 'Y') base.type_select(apartmentPage.typeMould['source_bear_id'], 'AutoTest-13666666665') # 报销人 base.type_select(apartmentPage.typeMould['moneytype'], 'CUSTOMER_AGENT_PYMENT') base.type_select(apartmentPage.typeMould['customer_name'], 'AutoTest') base.type_select(apartmentPage.typeMould['customer_bank_location'], 'ABC') base.type_select(apartmentPage.typeMould['bank_card'], '6228481561239334717') # base.input_text(base.apartmentMould['brepay_company'],u'杭州爱上租科技有限公司') base.click(apartmentPage.apartmentMould['submit_btn']) base.check_submit() consoleLog(u'房源 %s 的报销单新增成功' % apartmentCode) sql = "SELECT expense_num from reimbursement_expense where apartment_id = (SELECT apartment_id from apartment where apartment_code = '%s')" % apartmentCode.encode( 'utf-8') consoleLog(u'记录房源 %s 的报销编号' % apartmentCode) num = sqlbase.serach(sql)[0] #写入配置文件 set_conf('houseInfo', apartmentReimbursementNum=num) finally: base.driver.quit()
def test_1018(): """未复审出租合同发起结算""" # describe:未复审合同不能发起结算 # data:未复审出租合同 # result:终止失败 fileName = 'apartmentContract_1018' contractSql = "SELECT ac.contract_num,cp.urgent_customer_name,cp.customer_name from apartment_contract ac inner join customer_person cp on ac.person_id=cp.person_id " \ "where ac.deleted = 0 and ac.city_code = '330100' and ac.entrust_type='SHARE' and ac.audit_status = 'AUDIT' and ac.contract_status = 'EFFECTIVE' " \ "and ac.deleted=0 and payment_type='NORMAL' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机合同 %s 做合同终止' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.dblclick(apartmentContractPage.searchContractMould['tr_contract'] ) # 双击第一条数据 # 打开详情页需要加载,但DOM其实已经加载完仍旧无法点击,此处加5秒等待 for i in range(5): try: base.click(apartmentContractPage. addApartmentContractMould['tab_info_loc'], index=4) # 租客详情 break except: time.sleep(1) # 初审 base.click(apartmentContractPage. addApartmentContractMould['chushen_loc']) # 初审 base.click(apartmentContractPage. addApartmentContractMould['contract_audit_confirm']) # 确定 base.check_submit() base.click(apartmentContractEndPage. addContractEndMould['end_button_loc']) # 终止结算 time.sleep(1) message = base.script( "var a = $('.bootstrap-growl.alert.alert-info.alert-dismissible').text();return a", True) # 获取提示信息 messagehope = u'合同未复审不能终止结算' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1018, u'%s:出租合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def auditApartmentContract(): """审核出租合同终止结算""" try: base=Base() base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end'], havaFrame=False) #配置文件读取出租合同终止结算信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0 and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) else: sql = "SELECT contract_num from apartment_contract act inner join apartment_contract_end ace on act.contract_id = ace.contract_id where ace.deleted = 0 " \ "and act.city_code = 330100 and ace.audit_status = 'NO_AUDIT' and act.contract_type = 'NEWSIGN' and act.entrust_type = 'SHARE' limit 1" if sqlbase.get_count(sql) > 0: contractNum = sqlbase.serach(sql)[0] consoleLog(u'未找到测试合同,随机使用合同 %s 做审核终止结算用例' % contractNum, level='w') base.input_text(apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) set_conf('apartmentContractInfo', contractnum=contractNum) else: consoleLog(u'未找到符合条件的可以做终止的出租合同,跳过出租合同终止步骤', level='w') return base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) # 驳回 base.click(apartmentContractEndPage.addContractEndMould['bohui_loc']) base.input_text(apartmentContractEndPage.addContractEndMould['contract_audit_content'], u'自动化测试审核数据') base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) # 初审 base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) base.click(apartmentContractEndPage.addContractEndMould['chushen_loc']) base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) base.staleness_of(apartmentContractEndPage.searchMould['tr_contract_end']) base.dblclick(apartmentContractEndPage.searchMould['tr_contract_end']) # 复审 base.click(apartmentContractEndPage.addContractEndMould['fushen_loc']) base.click(apartmentContractEndPage.addContractEndMould['contract_audit_confirm']) consoleLog(u'出租合同 %s 终止结算审核成功' % contractNum) finally: base.driver.quit()
def test_1037(): """出租合同承租周期小于一年""" # describe: 出租合同承租周期小于一年,生成一条业绩单 # data:1、房源已定价2、设计工程已交房;3、有装修成本;4、房源类型为合租;5、出租合同承租周期不大于1年; # result:生成一条业绩单,审核状态为待审核,核发月份为空 fileName = 'apartmentAchievement_1037' randomApartment = "SELECT a.apartment_code,a.apartment_id,hc.contract_num,hc.contract_id FROM apartment a INNER JOIN house_contract hc " \ "ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' AND hc.deleted = 0 AND hc.audit_status='APPROVED' AND hc.contract_status = 'EFFECTIVE' " \ "INNER JOIN fitment_house fh on fh.house_id=hc.house_id AND fh.fitment_status='HANDOVER' WHERE a.deleted = 0 " \ "AND a.rent_price > 0 AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND a.rent_status='WAITING_RENT'" \ "AND hc.real_due_date>date_add(date(sysdate()), interval 1 YEAR) ORDER BY RAND() LIMIT 1" if sqlbase.get_count(randomApartment) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % randomApartment) return info = sqlbase.serach(randomApartment) apartmentCode = info[0] apartmentId = info[1] consoleLog(u'%s:使用房源 %s 签约出租合同' % (fileName,apartmentCode)) dateInfo = sqlbase.serach( "SELECT entrust_start_date,entrust_end_date,date(sysdate()),date_add(date(sysdate()), interval 1 DAY),date_add(date(sysdate()), interval 6 month) " "from house_contract where contract_num = '%s'" % info[2]) # 获取时间元素 with Base() as base: # 创建出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[2], rent_start_date=dateInfo[3], rent_end_date=dateInfo[4], deposit=2000, payment_cycle='TOW_MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_code='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='SHARE' " \ "AND ac.is_active='Y' " % (apartmentCode, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(contractAdd,1)).is_true(),1037, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca inner join apartment a on a.apartment_code=aca.house_code " \ "where contract_num='%s' and a.apartment_code='%s'and aca.deleted=0 " % (apartmentContractNum, apartmentCode) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert(lambda test:asserts(achievementinfo[0]).is_equal_to('N'), 1037, u'%s:合同 %s 对应业绩生效状态异常,期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert(lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1037, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) base.diffAssert(lambda test: asserts(achievementinfo[2]).is_equal_to('None'), 1037, u'%s:合同 %s 对应业绩审核发月份异常, 期望值 None 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[2])) else: consoleLog( u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum),'e') consoleLog(u'执行SQL:%s' % achievementsqla)
def test_1012(): """出租合同已有实收""" # describe:出租合同有实收不能删除 # data:出租合同已有实收 # result:删除失败 fileName = 'apartmentContract_1012' contractSql = "select ac.contract_num from apartment_contract ac inner join apartment_contract_receipts acr on ac.contract_id=acr.contract_id " \ "where ac.deleted=0 and ac.is_active='Y' and ac.city_code=330100 and ac.entrust_type='SHARE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机实收出租合同 %s 做合同删除' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click( apartmentContractPage.searchContractMould['delete_loc']) # 删除 base.click(apartmentContractPage. addApartmentContractMould['delete_button_confirm']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'请财务先重置并删除收款信息' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1012, u'%s:出租合同 %s 删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1036(): """到期委托合同正常删除""" # describe:到期委托合同可以正常删除成功 # data:1、委托合同状态为到期;2.名下无出租合同 # result:委托合同删除成功; fileName = 'houseContract_1036' dateSql = "select date_sub(date(sysdate()),INTERVAL 24 month),date_add(date(sysdate()),INTERVAL 1 day),date_sub(date(sysdate()),interval 5 month)," \ "date_sub(date(sysdate()),interval 2 month),date_sub(date(sysdate()),INTERVAL 23 month) from dual" # 时间元素 dateInfo = sqlbase.serach(dateSql) houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1") houseInfo = {'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2],'houseCode': houseSql[3]} # 开发房源信息 with Base() as base: #创建到期委托合同 apartmentId = addHouseContractAndFitment(apartment_type='BRAND', entrust_type='ENTIRE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) contractSql = "select hc.contract_num,a.apartment_code from house_contract hc INNER JOIN apartment a on a.house_contract_id=hc.contract_id and a.apartment_id='%s'" % apartmentId contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] contractStatusSql = "select * from house_contract where contract_num='%s' and contract_status='EXPIRE'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.waitData(contractStatusSql,1)).is_true(),1036, u'%s:已到期合同 %s 生成异常,执行SQL:%s"' % (fileName, contractNum, contractStatusSql)) base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text(houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text(houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click(houseContractPage.addHouseContractMould['delete_button_confirm']) base.check_submit() # 合同状态检查 contractSqlb = "select * from house_contract where deleted=1 and contract_num='%s'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.get_count(contractSqlb)).is_equal_to(1),1036, u'%s:已到期委托合同 %s 删除异常,执行SQL:%s"' % (fileName, contractNum, contractSqlb))
def test_1035(): """已终止的合同不能删除""" # describe:已终止的合同不能删除 # data:1、合同状态为公司违约或者业主违约或者正退;2.名下无出租合同 # result:删除失败,委托合同为终止状态不能删除 fileName = 'houseContract_1035' contractSql = "select hc.contract_num ,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where hc.contract_status='OWNER_DEFAULT' " \ "and hc.deleted=0 and hc.city_code=330100 and not EXISTS (select * from apartment_contract ac where hc.house_id=ac.house_id)order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取已终止委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.wait_element( houseContractPage.addHouseContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'委托合同为终止状态不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1035, u'%s:已终止委托合同 %s 删除异常,期望信息"%s"实际信息"%s"' % (fileName, contractNum, messagehope, message))
def test_1031(): """有有效出租合同的委托合同删除""" # describe:有有效出租合同的委托合同不能删除 # data:1、委托合同状态为有效;2、委托合同下有至少一个有效状态的出租合同; # result:删除失败,提示有关联的出租合同不能删除 fileName = 'houseContract_1031' contractSql = "select hc.contract_num ,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where EXISTS (select * from apartment_contract ac " \ "where hc.house_id=ac.house_id and ac.is_active='Y' and ac.deleted=0 )and hc.is_active='Y' and hc.deleted=0 and hc.city_code=330100 order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.wait_element( houseContractPage.addHouseContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'有关联的出租合同不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1031, u'%s:合同 %s 删除异常,期望信息"%s"实际信息"%s"' % (fileName, contractNum, messagehope, message))
def test_1017(): """已终止合同发起结算""" # describe:已终止合同不能重复发起结算 # data:合同已终止 # result:终止结算提交失败 fileName = 'apartmentContract_1017' contractSql = "select contract_num from apartment_contract where contract_status in ('COLLECTHOUSE','CORPORATE_DEFAULT','OWNER_DEFAULT','RETREATING','FORRENT') " \ "and city_code=330100 and deleted=0 and entrust_type='SHARE' order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机出租合同 %s 做终止' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text( apartmentContractEndPage.addContractEndMould['contract_num_loc'], contractNum) # 输入合同编 base.click(apartmentContractEndPage. addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage. addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage. addContractEndMould['tr_contract']) # 右击第一条数据 base.click( apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 time.sleep(1) message = base.script( "var a = $('.bootstrap-growl.alert.alert-info.alert-dismissible').text();return a", True) # 获取提示信息 messagehope = u'该合同已终止' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1017, u'%s:出租合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1010(): """出租合同已终止删除""" # describe:出租合同已终止不能删除 # data:出租合同已终止结算 # result:删除失败 fileName = 'apartmentContract_1010' contractSql = "select contract_num from apartment_contract where contract_status in ('COLLECTHOUSE','CORPORATE_DEFAULT','OWNER_DEFAULT','RETREATING','FORRENT') " \ "and city_code=330100 and deleted=0 and entrust_type='SHARE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机出租终止合同 %s 做合同删除' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['delete_loc']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'出租合同已终止不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1010, u'%s:出租合同 %s 删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1022(): """合同终止结算已复审删除""" # describe:合同终止结算已复审不能删除 # data:合同终止结算已复审 # result:删除失败 fileName = 'apartmentContract_1022' contractSql = "select ac.contract_num from apartment_contract_end ace inner join apartment_contract ac on ace.contract_id=ac.contract_id " \ "and ac.city_code=330100 where ace.deleted=0 and ace.audit_status='REVIEW' order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机终止结算合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) base.click( apartmentContractEndPage.addContractEndMould['delete_button']) base.click(apartmentContractEndPage. addContractEndMould['delete_button_confirm']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'终止结算已审核,不可删除' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1022, u'%s:出租合同 %s 终止结算删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1034(): """有效委托合同正常删除""" # describe:有效合同正常删除 # data:1、委托合同状态为有效;2、委托合同下没有有效状态的出租合同; # result:委托合同删除成功; fileName = 'houseContract_1034' # contractSql = "select hc.contract_num,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where not EXISTS (select * from apartment_contract ac " \ # "where hc.house_id=ac.house_id) and hc.is_active='Y' and hc.deleted=0 and hc.city_code=330100 order by rand() limit 1" contractSql = "select hc.contract_num,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where not EXISTS (select * from house_contract_pay hcp " \ "where hc.contract_id=hcp.contract_id and hcp.deleted=0) and not EXISTS (select * from apartment_contract ac where hc.house_id=ac.house_id)and hc.is_active='Y' " \ "and hc.deleted=0 and hc.city_code=330100" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.check_submit() # 合同状态检查 contractSqlb = "select * from house_contract where deleted=1 and contract_num='%s'" % contractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(contractSqlb, 1)).is_true(), 1034, u'%s:委托合同 %s 删除异常,执行SQL:%s"' % (fileName, contractNum, contractSqlb))
def deleteHouseContractEnd(): """删除委托合同终止结算""" try: base = Base() base.open( page.contractEndPage, houseContractEndPage.searchMould['contract_search_button_loc'], havaFrame=False) base.click(houseContractEndPage.addContractEndMould['tab_info'], index=1) #配置文件读取待审核的委托合终止结算 contractNum = get_conf('houseContractInfo', 'contractnum') consoleLog(u'查询委托合同 %s 是否存在终止结算' % contractNum) sql = "SELECT * from house_contract where contract_num = '%s' and deleted = 0 and audit_status = 'APPROVED' and contract_status != 'EFFECTIVE'" % contractNum.encode( 'utf-8') if sqlbase.get_count(sql) > 0: base.input_text( houseContractEndPage.searchMould['end_contract_num_loc'], contractNum) base.click( houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) else: base.click( houseContractEndPage.searchMould['end_search_button_loc']) base.staleness_of( houseContractEndPage.searchMould['tr_contract_end']) contractNum = base.script( "var a = $('#ContractReceivable_table_wt > div:nth-child(1) > div:nth-child(2) > div.datagrid-view > div.datagrid-view2 > div.datagrid-body > " "table > tbody > tr:nth-child(1) > td[field=\"contract_num\"] > div').text();return a", True).decode('utf-8') consoleLog(u'未找到测试合同的终止结算,随机删除委托合同 %s 的终止结算' % contractNum) base.click(houseContractEndPage.addContractEndMould['delete_button']) base.click( houseContractEndPage.addContractEndMould['delete_button_confirm']) base.check_submit() consoleLog(u'委托合同 %s 终止结算删除成功' % contractNum) finally: base.driver.quit()
def deleteCustomer(): """删除租前客户信息""" try: base=Base() base.open(page.customerListPage, customerPage.listMould['tr_customer'], havaFrame=False) #配置文件中读取租前客户信息 customerName = get_conf('customerInfo', 'customerName') sql = "SELECT * from customer where customer_name = '%s' and deleted = 0" % customerName.encode('utf-8') if sqlbase.get_count(sql) > 0: base.input_text(customerPage.listMould['customer_name_search'], customerName) base.click(customerPage.listMould['search_button']) base.staleness_of(customerPage.listMould['tr_customer']) base.click(customerPage.listMould['delete_button']) base.click(customerPage.listMould['alert_confirm']) base.check_submit() consoleLog(u'租前客户 %s 删除成功' % customerName) else: consoleLog(u'未找到租前客户 %s,跳过删除' % customerName) finally: base.driver.quit()
def deleteApartmentContract(): """删除出租合同""" try: base=Base() base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract'], havaFrame=False) #配置文件读取合同编号信息 contractNum = get_conf('apartmentContractInfo', 'contractnum') sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0" % contractNum.encode('utf-8') if sqlbase.get_count(sql) > 0: base.input_text(apartmentContractPage.searchContractMould['contract_num_loc'], contractNum.decode('utf-8')) base.click(apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) base.script("$('#data_perm_btn').click()") base.click(apartmentContractPage.addApartmentContractMould['delete_button_confirm']) base.check_submit() consoleLog(u'出租合同 %s 删除成功' % contractNum) else: consoleLog(u'未找到出租合同 %s ,跳过删除用例' % contractNum) finally: base.driver.quit()
def test_1014(): """正常出租合同删除""" # describe:正常出租合同删除 # data:出租合同状态有效且没有实收 # result:删除成功 fileName = 'apartmentContract_1014' contractSql = "select ac.contract_num from apartment_contract ac where not EXISTS (select * from apartment_contract_receipts acr where ac.contract_id=acr.contract_id) " \ "and ac.deleted=0 and ac.is_active='Y' and ac.city_code=330100 and ac.entrust_type='SHARE' and ac.contract_status='EFFECTIVE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机有效出租合同 %s 做合同删除' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['delete_loc']) base.click(apartmentContractPage. addApartmentContractMould['delete_button_confirm']) base.check_submit() # 合同检查 contractStatusSql = "select * from apartment_contract where deleted=1 and contract_num='%s' " % contractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(contractStatusSql, 1)). is_true(), 1014, u'%s:出租合同 %s 删除异常,执行SQL:%s' % (fileName, contractNum, contractStatusSql))
def test_1106(): """未复审委托合同做终止结算""" # describe:委托合同未复审无法做终止结算 # data:1.委托合同未复审 # result:1.终止结算失败 fileName = 'apartmentContract_1106' contractSql = "select contract_num from house_contract where is_active='Y' and contract_status='EFFECTIVE' and audit_status<>'APPROVED' and deleted=0 and city_code=330100 order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机未复审委托合同 %s 做终止结算' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractEndPage.addContractEndMould['tr_contract']) base.input_text(houseContractEndPage.searchMould['contract_num_loc'], contractNum) # 输入合同号 base.click(houseContractEndPage. searchMould['contract_search_button_loc']) # 搜索 base.staleness_of( houseContractEndPage.addContractEndMould['tr_contract']) # 等待数据刷新 base.context_click( houseContractEndPage.addContractEndMould['tr_contract']) # 右击第一条数据 base.click(houseContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'审核状态为“已审核”才可以发起终止结算' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1106, u'%s:委托合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1019(): """未复审出租合同发起结算""" # describe:未复审合同不能发起结算 # data:未复审出租合同 # result:终止失败 fileName = 'apartmentContract_1019' contractSql = "select contract_num from apartment_contract where contract_status='CONTINUED' " \ "and city_code=330100 and deleted=0 and entrust_type='SHARE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机已续合同 %s 做合同终止' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractEndPage. addContractEndMould['end_button_loc']) # 终止结算 time.sleep(1) message = base.script( "var a = $('.bootstrap-growl.alert.alert-info.alert-dismissible').text();return a", True) # 获取提示信息 messagehope = u'续签的合同不能终止结算' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1019, u'%s:出租合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))