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)
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
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)
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)
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
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)
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
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