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_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 creatResidential(cityCode=None, residentialName=None): url = 'isz_house/ResidentialController/saveResidential.action' residentialName = residentialName if residentialName else u"XX苏州测试楼盘" # + '-' + time.strftime('%m%d-%H%M%S') sql = "SELECT sd.parent_id FROM sys_department sd INNER JOIN sys_user sur ON sur.dep_id = sd.dep_id INNER JOIN sys_position spt ON spt.position_id = sur.position_id " \ "WHERE sd.dep_district = 320500 AND sd.is_active='Y' AND sd.dep_id <> '00000000000000000000000000000000' AND (spt.position_name LIKE '资产管家%' OR spt.position_name LIKE '综合管家%') AND sd.dep_name NOT LIKE '%培训%'" \ "ORDER BY RAND() LIMIT 1" dutyDepID = sqlbase.serach(sql)[0] data = { "residential_name": residentialName, "residential_jianpin": "auto", "city_code": city_code if not cityCode else cityCode, "area_code": area_code, "taBusinessCircleString": taBusinessCircleString, "address": "autoTest", "gd_lng": "120.138631", "gd_lat": "30.186537", "property_type": "ordinary", "taDepartString": dutyDepID, "byname": "auto" } result = myRequest(url, data) if result: sql = "SELECT residential_id from residential where residential_name = '%s' and deleted=0" % residentialName.encode( 'utf-8') residentialID = sqlbase.serach(sql)[0] residential = { 'residentialName': residentialName, 'residentialID': residentialID, 'dutyDepID': dutyDepID } consoleLog(u'楼盘‘%s’创建成功' % residentialName) return residential
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 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_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_1038(): """承租周期大于一年且小于18个月生成一条业绩""" # describe: 出租合同承租周期小于一年,生成一条业绩单 # data:1、房源类型为服务整租;2、出租合同承租周期为16个月;3、承租到期日等于委托延长期到期日; # result:生成一条业绩单,审核状态为待审核,核发月份为空 fileName = 'apartmentAchievement_1038' with Base() as base: # 创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 13 month),date_add(date(sysdate()),interval 16 month)," \ "date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment(apartment_type='MANAGE', 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) # 创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[3], deposit=2000, payment_cycle='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_id='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='ENTIRE' " \ "AND ac.is_active='Y' " % (apartmentId, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(contractAdd, 1)).is_true(), 1038, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select FLOOR(ABS(DATEDIFF(aca.start_time,aca.end_time)/30)),aca.audit_status,aca.is_active from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId, apartmentContractNum) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert(lambda test: asserts(achievementinfo[0]).is_equal_to(16), 1038, u'%s:合同 %s 对应业绩周期异常,期望值 16 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert(lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1038, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) base.diffAssert(lambda test: asserts(achievementinfo[2]).is_equal_to('N'), 1038, u'%s:合同 %s 对应业绩生效状态异常, 期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[2])) else: consoleLog(u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum),'e') consoleLog(u'执行SQL:%s'% achievementsqla)
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 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_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 roomName(room_id): """根据room_id获取房间号""" if not (room_id is None or room_id == 'None'): room_no = sqlbase.serach("select room_no from house_room where room_id='%s'" % room_id)[0] return ROOM_NAME[room_no] else: return None
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 creatFloor(count=5): url = 'isz_house/ResidentialBuildingController/saveResidentialBuildingFloor.action' unit = creatUnit() floors = [] for i in range(count): residential = {} for key in unit.keys(): residential[key] = unit[key] floorName = i + 1 data = { "property_name": residential['residentialName'] + residential['buildingName'] + residential['unitName'], "floor_name": floorName, "unit_id": residential['unitID'], "building_id": residential['buildingID'] } result = myRequest(url, data) if result: sql = "SELECT floor_id from residential_building_floor where building_id = '%s' and unit_id = '%s' order by CONVERT(floor_name,SIGNED)" % ( residential['buildingID'], residential['unitID']) floorID = sqlbase.serach(sql, oneCount=False)[i] residential['floorID'] = floorID residential['floorName'] = floorName floors.append(residential) consoleLog(u'楼层全部创建成功') return floors
def test_1073(): """出租合同3个页面的保存调用同一个接口,但是参数不一致,检测接口是否正常""" with Base() as base: contractNum = sqlbase.serach( "select contract_num from query_apartment_contract where audit_status = 'AUDIT' and city_code = '330100' and contract_status = 'EFFECTIVE' " "and entrust_type = 'SHARE' order by rand() limit 1") base.open( page.apartmentContractPage, apartmentContractPage.searchContractMould['contract_num_loc']) 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'], checkLoc=apartmentContractPage.saveBtn) for i in range(3): base.click(apartmentContractPage.editTab, index=i + 2) # base.click(apartmentContractPage.saveBtn,index=i) base.wait_element(apartmentContractPage.saveBtn) base.driver.find_elements( By.CSS_SELECTOR, '.search-button-wrapper #form_save')[i].click() try: base.check_submit() except TimeoutException: base.diffAssert(lambda t: asserts('1').contains('2'), 1073, u'合同详情第 %s 个tab页无法保存' % str(i + 1))
def addResidential(): """删除楼盘""" try: mybase = Base() mybase.open(page.residentiaPage, residentiaPage.searchResidentialModule['search_btn'], havaFrame=False);consoleLog(u'打开JSP页面') # mybase.open(Page.residentiaPage, (By.ID, 'search_btn'), havaFrame=False) sql = 'select residential_name from residential where residential_name like "AutoTest-%" and deleted<>1' ResidentiaName = sqlbase.serach(sql)[0];consoleLog(u'查询结果:%s' % ResidentiaName) # ResidentiaName='AutoTest-0706-103107' mybase.input_text((By.CSS_SELECTOR, "#residential_name"), ResidentiaName,event=u'输入楼盘名称:')\ # ;consoleLog(u'输入楼盘名称') mybase.click((By.ID, 'search_btn'));consoleLog(u'点击查找') mybase.staleness_of(residentiaPage.searchResidentialModule['tr_residential']);consoleLog(u'等待数据刷新') mybase.click((By.CSS_SELECTOR, '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(17) > div > button:nth-child(5)'));consoleLog(u'点击删除') # 点击删除 mybase.click((By.CSS_SELECTOR, 'div>a>span>span'),1);consoleLog(u'确定删除') # 点击确定 mybase.click((By.ID, 'search_btn'));consoleLog(u'再次查找') # 再次查找 try: WebDriverWait(mybase.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(11) ')), u'未找确定楼盘 %s 信息' % ResidentiaName) raise Exception(u'楼盘 %s 信息存在,删除失败'%ResidentiaName) except u'未找确定楼盘 %s 信息' % ResidentiaName: consoleLog(u'楼盘删除成功') finally: mybase.driver.quit()
def orderNum(orderIdOrNum): order_id = sqlbase.serach( "select order_id from %s.repairs_order where (order_id='%s' or order_no='%s') and deleted=0" % (get_conf('db', 'rsm_db'), orderIdOrNum, orderIdOrNum)) if order_id: return order_id[0] else: consoleLog(u'报修订单不存在!')
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 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 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 addHouse(): url = 'isz_house/HouseController/saveHouseDevelop.action' houses = creatHouseNum() houseIds = [] for house in houses: residential = {} for key in house.keys(): residential[key] = house[key] # personInfo = sqlbase.serach("select user_id,dep_id from sys_user where user_phone = '18815286582'") personInfo = userInfo data = { "residential_name_search": residential['residentialID'], "building_name_search": residential['buildingID'], "unit_search": residential['unitID'], "house_no_search": residential['houseNumID'], "residential_name": residential['residentialName'], "building_name": residential['buildingName'], "unit": residential['unitName'], "floor": residential['floorName'], "house_no": residential['houseNumName'], "residential_address": residential_address, "city_code": city_code, "area_code": area_code, "business_circle_id": "4", "contact": "test", "did": personInfo['did'], "uid": personInfo['uid'], "house_status": "WAITING_RENT", "category": "NOLIMIT", "source": "INTRODUCE", "rental_price": "2500.00", "rooms": "3", "livings": "1", "kitchens": "1", "bathrooms": "2", "balconys": "2", "build_area": "120", "orientation": "NORTH", "residential_id": residential['residentialID'], "building_id": residential['buildingID'], "unit_id": residential['unitID'], "floor_id": residential['floorID'], "house_no_id": residential['houseNumID'], "business_circle_name": business_circle_name, "contact_tel": "18815286582" } result = myRequest(url, data) if result: sql = "select house_develop_id from house_develop where house_no_id = '%s'" % residential[ 'houseNumID'] houseDevelogID = sqlbase.serach(sql)[0] residential['houseDevelogID'] = houseDevelogID houseIds.append(residential) consoleLog(u'审核房源全部新增成功') return houseIds
def auditHouse(): """审核房源""" try: base = Base() #需要从配置文件读取新增的房源信息才能做审核操作 residential = get_conf('residential', 'residentialname') building = get_conf('residential', 'buildingname') unit = get_conf('residential', 'unitname') houseno = get_conf('residential', 'housenoname') address = residential + building + unit + houseno base.open(page.houseAuditPage, houseAuditPage.houseAuditPageloc['audit_btn']) base.input_text(houseAuditPage.searchMould['residentia_name_loc'], residential) base.input_text(houseAuditPage.searchMould['building_name_loc'], building) base.input_text(houseAuditPage.searchMould['unit_name_loc'], unit) base.input_text(houseAuditPage.searchMould['houseno_name_loc'], houseno) base.click(houseAuditPage.searchMould['search_button_loc']) base.staleness_of(houseAuditPage.searchMould['tr_house']) base.script('$("#audit_btn").click()') base.click(houseAuditPage.houseAuditPageloc['cancel_btn']) # 审核通过 for i in range(5): try: base.click( houseAuditPage. houseAuditPageloc['iszCommonWorkflowPageSure']) # 确定 break except: base.click( houseAuditPage.houseAuditPageloc['cancel_btn']) # 审核通过 base.check_submit() try: base.solr('house', get_conf('testCondition', 'test')) consoleLog(u'solr的house-core增量成功') except: consoleLog(Exception.message, level='e') consoleLog(u'执行house-core的增量失败,请检查solr是否正常', level='w') pass consoleLog(u'房源 %s审核成功' % address) house = sqlbase.serach( "SELECT residential_id,building_id,unit_id,house_no_id,house_id,house_code from house where property_name like '%s%%' and deleted = 0" % address.encode('utf-8')) set_conf('residential', residentialID=house[0], buildingID=house[1], unitID=house[2], housenoID=house[3]) set_conf('houseInfo', houseID=house[4], houseCode=house[5]) finally: base.driver.quit()
def __init__(self, apartmentIdOrNum): apartmentInfo = sqlbase.serach( "select apartment_id,apartment_code,apartment_type,rent_status,rent_type,house_id,room_id from apartment where (apartment_id='%s' or apartment_code='%s') " "and is_active='Y' and deleted=0" % (apartmentIdOrNum, apartmentIdOrNum)) self.__apartment_id = apartmentInfo[0] self.__apartment_code = apartmentInfo[1] self.__apartment_type = apartmentInfo[2] self.__rent_status = apartmentInfo[3] self.__rent_type = apartmentInfo[4] self.__house_id = apartmentInfo[5] self.__room_id = apartmentInfo[6] self.__house_property = 'INRENT' # 房源属性 VACANCY:空置,INRENT:在租 # 出租相关 apartmentContractInfo = sqlbase.serach( "select a.contract_id,a.contract_num,a.sign_name,a.person_id,a.sign_phone from apartment_contract a inner join apartment_contract_relation b on a.contract_id=b.contract_id " "inner join apartment c on c.apartment_id=b.apartment_id where c.apartment_id='%s' and a.deleted=0 and a.is_active='Y'" % self.__apartment_id, nullLog=False) if not apartmentContractInfo: consoleLog(u'房源 %s 下无有效出租合同' % self.__apartment_code) self.__house_property = 'VACANCY' self.__apartment_contract_id = apartmentContractInfo[ 0] if apartmentContractInfo else None self.__apartment_contract_num = apartmentContractInfo[ 1] if apartmentContractInfo else None self.__customer_name = apartmentContractInfo[ 2] if apartmentContractInfo else None self.__customer_id = apartmentContractInfo[ 3] if apartmentContractInfo else None self.__customer_phone = apartmentContractInfo[ 4] if apartmentContractInfo else None # 委托相关 houseContractInfo = sqlbase.serach( "select a.contract_id, a.contract_num,b.property_name from house_contract a inner join house b on a.house_id=b.house_id where a.house_id='%s' and a.deleted=0 " "and a.is_active='Y'" % self.__house_id) self.__house_contract_id = houseContractInfo[0] self.__house_contract_num = houseContractInfo[1] self.__house_property_name = houseContractInfo[2]
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 createApartmentContract(data): """生成出租合同""" url = 'isz_contract/ApartmentContractController/saveOrUpdateApartmentContract.action' result = myRequest(url, data) if result: consoleLog('承租合同 %s 已创建完成' % data['contract_num']) apartmentContractInfo = { 'contractID': sqlbase.serach( "select contract_id from apartment_contract where contract_num = '%s'" % data['contract_num'])[0], 'contractNum': data['contract_num'] } return apartmentContractInfo['contractID']
def test_1071(): """检测出租合同续签需要合同应收全部已审""" sql = "SELECT act.contract_num from apartment_contract act INNER JOIN apartment_contract_receivable acr on act.contract_id = acr.contract_id where act.deleted = 0 " \ "and acr.deleted = 0 and act.entrust_type = 'SHARE' and act.city_code = '330100' and acr.end_status = 'NOTGET' order by rand() limit 1" contractNum = sqlbase.serach(sql)[0] with Base() as base: base.open(page.apartmentContractPage,apartmentContractPage.searchContractMould['contract_num_loc']) 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']) try: base.wait_element(apartmentContractPage.alertInfo) except TimeoutException: base.diffAssert(lambda t:asserts('a').ends_with('b'), 1071, u'出租合同未全部收款审核的情况下,续签没有弹出提示')
def creatUnit(): url = 'isz_house/ResidentialBuildingController/saveResidentialBuildingUnit.action' # residential = creatBuilding() # 楼盘下栋座新增单元 residentialInfo = sqlbase.serach( "select r.residential_name,r.residential_id,rb.building_name,rb.building_id,rd.did from residential r inner join residential_building rb " "on r.residential_id=rb.residential_id inner join residential_department rd on r.residential_id=rd.residential_id " "where r.residential_id='FF80808163F7FB92016420236FA2000F'and building_id='FF80808163F7FB95016420306DB103EB'" ) residential = { 'residentialName': residentialInfo[0], 'residentialID': residentialInfo[1], 'buildingName': residentialInfo[2], 'buildingID': residentialInfo[3], 'dutyDepID': residentialInfo[4], } unitName = u'1单元' data = { "property_name": residential['residentialName'] + residential['buildingName'], "unit_name": unitName, "no_unit": u"无", "building_id": residential['buildingID'] } result = myRequest(url, data) if result: sql = "SELECT unit_id from residential_building_unit where building_id = '%s' order by create_time desc limit 1" % \ residential['buildingID'] unitID = sqlbase.serach(sql)[0] residential['unitID'] = unitID residential['unitName'] = unitName consoleLog(u'单元‘%s’创建成功' % unitName) return residential
def creatHouseNum(count=4): url = 'isz_house/ResidentialBuildingController/saveResidentialBuildingHouseNo.action' floors = creatFloor() houses = [] for floor in floors: for i in range(count): residential = {} for key in floor.keys(): residential[key] = floor[key] houseNumName = '%s0%s' % (residential['floorName'], i + 1) data = { "property_name": residential['residentialName'] + residential['buildingName'] + residential['unitName'] + str(residential['floorName']) + u'层', "rooms": "3", "livings": "1", "bathrooms": "2", "kitchens": "1", "balconys": "2", "build_area": "120.00", "orientation": "NORTH", "house_no": houseNumName, "unit_id": residential['unitID'], "building_id": residential['buildingID'], "floor_id": residential['floorID'] } result = myRequest(url, data) if result: sql = "SELECT house_no_id from residential_building_house_no where building_id = '%s' and unit_id = '%s' and floor_id = '%s' order by CONVERT(house_no,SIGNED)" % \ (residential['buildingID'], residential['unitID'], residential['floorID']) houseNumID = sqlbase.serach(sql, oneCount=False)[i] residential['houseNumID'] = houseNumID residential['houseNumName'] = houseNumName houses.append(residential) consoleLog(u'房号全部新增成功') return houses
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 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 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()