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
Ejemplo n.º 3
0
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)
Ejemplo n.º 8
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))
Ejemplo n.º 9
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()
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))
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
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']))  # 续签
Ejemplo n.º 13
0
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()
Ejemplo n.º 16
0
 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))
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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()
Ejemplo n.º 22
0
 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()
Ejemplo n.º 24
0
 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'出租合同未全部收款审核的情况下,续签没有弹出提示')
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
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
Ejemplo n.º 28
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 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()
Ejemplo n.º 30
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()