示例#1
0
 def prepare_rule_101_data_verify_result(self,
                                         data_name,
                                         rule_id,
                                         expected_rule_result,
                                         set_contacts=False,
                                         relative_cnt=None,
                                         mobil_numb=None):
     test_data = self.rule_data['ruleTestData'][data_name]
     id_account, id_borrow = test_data['idAccount'], test_data['idBorrow']
     transaction_id = "RT{}{}{}".format(id_account, id_borrow,
                                        utils.get_random_numb(201, 300))
     test_data.update({
         'transactionId': transaction_id,
         'roundId': '1'
     })  # roundId 更新为1
     utils.log(
         'Step. make sure there are record in mongo users collection.')
     self.insert_mongo_users(id_account)
     utils.log(
         'Step. make sure no relative_cnt via delete it in vnrisk_applied_contacts'
     )
     delete_applied_contacts_sql = self.rule_data['SQL']['delete'][
         'appliedContacts'].format(mobil_numb)
     self.risk_conn.update(delete_applied_contacts_sql)
     if set_contacts:
         utils.log(
             'Step. insert a record in vnrisk_user_contacts for id_account:{} with mobil number:{}'
             .format(id_account, mobil_numb))
         query_user_contacts_cnt = self.rule_data['SQL']['query'][
             'userContactsCnt'].format(id_account, mobil_numb)
         if self.risk_conn.fetchone(query_user_contacts_cnt)['cnt'] == 0:
             insert_user_contacts_sql = self.rule_data['SQL']['insert'][
                 'userContacts'].format(utils.get_random_numb(2999, 5555),
                                        id_account, mobil_numb)
             self.risk_conn.update(insert_user_contacts_sql)
         utils.log(
             'Step. insert a record in vnrisk_applied_contacts for mobile={},set relative_cnt:{}'
             .format(mobil_numb, relative_cnt))
         query_applied_contacts_cnt = self.rule_data['SQL']['query'][
             'applied_contacts_cnt'].format(mobil_numb)
         # if self.risk_conn.fetchone(query_applied_contacts_cnt)['cnt'] == 0:
         #     applied_contacts_sql = self.rule_data['SQL']['insert']['applied_contacts'].format(mobil_numb, id_account, relative_cnt)
         # else:
         #     applied_contacts_sql = self.rule_data['SQL']['update']['applied_contacts'].format(id_account, relative_cnt, mobil_numb)
         insert_applied_contacts = self.rule_data['SQL']['insert'][
             'applied_contacts'].format(mobil_numb, id_account,
                                        relative_cnt)
         update_applied_contacts = self.rule_data['SQL']['update'][
             'applied_contacts'].format(id_account, relative_cnt,
                                        mobil_numb)
         applied_contacts_sql = update_applied_contacts if self.risk_conn.fetchone(
             query_applied_contacts_cnt)['cnt'] else insert_applied_contacts
         self.risk_conn.update(applied_contacts_sql)
     self.call_rule(test_data)
     utils.log('Step. verify rule #{} result is {}'.format(
         rule_id, expected_rule_result))
     self.verify_rule_result(test_data, rule_id, expected_rule_result)
示例#2
0
    def save_people_api(self,
                        payload,
                        control_group,
                        select_count,
                        is_complex=False):
        """
        save people api
        :param payload:
        :param control_group:
        :param select_count: the select count in search api
        :param is_complex: is select people complex
        :return:
        """
        utils.log("call create people library api...")
        # construct save payload
        if not isinstance(select_count, int):
            select_count = int(select_count)
        grp1_ratio = utils.get_random_numb(
            55, 100) + 0.23 * utils.get_random_numb(
                1, 10)  # The sum of Radio should be 100
        grp2_ratio = 100 - grp1_ratio
        grp1_user_count = round(select_count * grp1_ratio * 0.01)  # 四舍五入取整
        grp2_user_count = round(select_count * grp2_ratio * 0.01)  # 四舍五入取整

        if is_complex:
            url = config.QA_SERVER + self.crm_data['CRM']['saveComplex']['path']
            header = self.crm_data['CRM']['saveComplex']['header']
            response_keyword = 'result'
            control_grp = json.loads(
                control_group %
                (grp1_ratio, grp1_user_count, grp2_ratio, grp2_user_count))
            control_grp_json = {"crmControlGroupReqList": control_grp}
            desc = self.desc_complex_prefix + utils.get_time_stamp()
        else:
            url = config.QA_SERVER + self.crm_data['CRM']['save']['path']
            header = self.crm_data['CRM']['save']['header']
            response_keyword = 'data'
            control_grp = control_group % (grp1_ratio, grp1_user_count,
                                           grp2_ratio, grp2_user_count)
            control_grp_json = {"controlGroupJson": control_grp}
            desc = self.desc_prefix + utils.get_time_stamp()

        people_library_desc = {'peopleLibraryDesc': desc}
        payload.update(people_library_desc)
        payload.update(control_grp_json)

        save_resp = self.req.post(url, headers=header, json=payload)
        self.assertMsg(save_resp)
        created_people_library_id = self.turn2dict(save_resp)[response_keyword]
        utils.log(
            "Create Successfully, The ID of People Library is: {}".format(
                created_people_library_id))
        return save_resp, created_people_library_id
示例#3
0
 def prepare_rule_99_100_data_verify_result(self,
                                            data_name,
                                            rule_id,
                                            expected_rule_result,
                                            set_score=False,
                                            total_score=None):
     test_data = self.rule_data['ruleTestData'][data_name]
     id_account, id_borrow = test_data['idAccount'], test_data['idBorrow']
     transaction_id = "RT{}{}{}".format(id_account, id_borrow,
                                        utils.get_random_numb(100, 200))
     test_data['transactionId'] = transaction_id
     utils.log(
         'Step. make sure there are record in mongo users collection.')
     self.insert_mongo_users(id_account)
     utils.log(
         'Step. make sure no model total score result via delete it in rule_model_total_score'
     )
     delete_total_score_sql = self.rule_data['SQL']['delete'][
         'modelTotalScore'].format(id_account)
     self.risk_conn.update(delete_total_score_sql)
     if set_score:
         utils.log(
             'Step. insert a total score={} record in rule_model_total_score'
             .format(total_score))
         insert_total_score_sql = self.rule_data['SQL']['insert'][
             'modelTotalScore'].format(id_account, id_borrow, total_score,
                                       transaction_id)
         self.risk_conn.update(insert_total_score_sql)
     self.call_rule(test_data)
     utils.log('Step. verify rule #{} result is {}'.format(
         rule_id, expected_rule_result))
     self.verify_rule_result(test_data, rule_id, expected_rule_result)
示例#4
0
 def update_mongo_loans_repaid_at(self, id_account, previous_day):
     utils.log('update mongo loans')
     action = 'update' if mongolib.MongoDAL.get_loans(id_account) else 'insert'
     doc_json = self.model_data['Mongo'][action]['loans_repaid_at']
     set_repaid_at = {'id_account': id_account, 'repaid_at': utils.get_previous_date(previous_day)}
     if action == 'insert': set_repaid_at['loan_id'] = utils.get_random_numb(10001, 99999)
     doc_json.update(set_repaid_at)
     mongolib.MongoDAL.upsert_user_loans([doc_json])
     time.sleep(1)
示例#5
0
 def call_borrow_apply(self, data, clean_borrow_case=True):
     id_account, id_borrow = data['id_account'], data['id_borrow']
     if clean_borrow_case:
         self.clean_borrow_case_if_exist(id_account, id_borrow)
     transaction_id = "RT{}{}{}".format(id_account, id_borrow, utils.get_random_numb(1001, 9999))
     data.update({"transaction_id": transaction_id})
     result = Pipeline.borrow_apply(self.req, data)
     utils.log('2.verify call api borrow-apply successfully.')
     self.assertEqual(utils.query_json(result, 'success'), 'true', 'call api borrow-apply failed!')
     time.sleep(6)
     return result, transaction_id
示例#6
0
 def prepare_rule_102_data_verify_result(self,
                                         data_name,
                                         rule_id,
                                         expected_rule_result,
                                         set_device=False,
                                         two_more_device=False,
                                         share_device=False):
     test_data = self.rule_data['ruleTestData'][data_name]
     id_account, id_borrow = test_data['idAccount'], test_data['idBorrow']
     transaction_id = "RT{}{}{}".format(id_account, id_borrow,
                                        utils.get_random_numb(301, 400))
     test_data.update({
         'transactionId': transaction_id,
         'roundId': '1'
     })  # roundId 更新为1
     utils.log(
         'Step. make sure there are record in mongo users collection.')
     self.insert_mongo_users(id_account)
     utils.log(
         'Step. make sure no test device_id info(in yml) via delete them in vnrpt_bhv_user_device_mapping.'
     )
     delete_user_device_sql = self.rule_data['SQL']['delete'][
         'userDeviceMapping']
     self.risk_conn.update(delete_user_device_sql)
     if set_device:
         update_ts = utils.get_previous_date(6)  # 6 days ago
         if two_more_device:
             utils.log(
                 'Step. insert 3 device info for account:{} within 3 months(historyDeviceCount > 2)'
                 .format(id_account))  # vnrpt_bhv_user_device_mapping
             insert_device_in_3_month_sql = self.rule_data['SQL']['insert'][
                 '3devices'].format(id_account, update_ts, id_account,
                                    update_ts, id_account, update_ts)
         else:
             utils.log(
                 'Step. insert 2 device info for account:{} within 3 months(historyDeviceCount <= 2)'
                 .format(id_account))
             insert_device_in_3_month_sql = self.rule_data['SQL']['insert'][
                 '2devices'].format(id_account, update_ts, id_account,
                                    update_ts)
         self.risk_conn.update(insert_device_in_3_month_sql)
     if share_device:
         utils.log(
             'Step. insert a share device:[300728abda0ec6e7] record with account:10086 for account:{} (deviceShareCount>0)'
             .format(id_account))  # vnrpt_bhv_user_device_mapping
         insert_1_share_device_with_another_sql = self.rule_data['SQL'][
             'insert']['sharedevice']
         self.risk_conn.update(insert_1_share_device_with_another_sql)
     time.sleep(2)
     self.call_rule(test_data)
     utils.log('Step. verify rule #{} result is {}'.format(
         rule_id, expected_rule_result))
     self.verify_rule_result(test_data, rule_id, expected_rule_result)
示例#7
0
 def prepare_model_data(self, picked_apply_orders, random=False):
     id_borrow, id_account = self.get_test_id_borrow_id_account(
         picked_apply_orders, 0)  # get last one
     if random:
         id_borrow, id_account = self.get_test_id_borrow_id_account(
             picked_apply_orders,
             utils.get_random_numb(0,
                                   len(picked_apply_orders) - 1))
     self.pre_check_order_exist_in_trade(id_borrow, id_account)
     self.clean_borrow_case_if_exist(id_account, id_borrow)
     data = self.model_data['BorrowApply']['payload']['General']
     data.update({'id_account': id_account, 'id_borrow': id_borrow})
     return id_borrow, id_account, data
示例#8
0
 def add_schedule_report(self, test_data):
     self.reportSchedule.click_report_biz_list()
     suffix = utils.get_random_numb()
     biz_type = self.data[test_data]['BizType'] + str(suffix)
     TestReportSchedule.new_biz_type_list.append(biz_type)
     self.reportSchedule.click_add()
     self.reportSchedule.fill_add_report_config(
         biz_type,
         self.data[test_data]['EmailTitle'] + str(suffix),
         self.data[test_data]['ScheduleTimeCreate'],
         self.data[test_data]['Template'],
         description=self.data[test_data]['Description'],
         email_date_format=self.data[test_data]['EmailDateFormat'],
         mail_title_timezone=self.data[test_data]['EmailTitleTimezone'],
         backdate=self.data[test_data]['BackDate'])
     self.reportSchedule.click_confirm()
     utils.log("success create report schedule, biz type is: {}".format(biz_type))
     return biz_type