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
Пример #6
0
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()
Пример #8
0
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()
Пример #9
0
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))
Пример #15
0
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)
Пример #17
0
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))
Пример #19
0
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))
Пример #20
0
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))
Пример #23
0
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))
Пример #24
0
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))