def get_time_step2(time_day, time_step): # 前开后闭 if time_step == '早晨': start_time, end_time = time_day + " " + "5:30:00", time_day + " " + "11:30:00" elif time_step == '中午': start_time, end_time = time_day + " " + "11:30:00", time_day + " " + "13:30:00" elif time_step == '下午': start_time, end_time = time_day + " " + "13:30:00", time_day + " " + "17:30:00" elif time_step == '晚上': start_time, end_time = time_day + " " + "17:30:00", time_day + " " + "23:30:00" elif time_step == '凌晨': start_time1, end_time1 = time_day + " " + "23:30:00", time_day + " " + "23:59:59" start_time2, end_time2 = time_day + " " + "00:00:00", time_day + " " + "05:30:00" start_time, end_time = random.choice( ((start_time1, end_time1), (start_time2, end_time2))) else: start_time, end_time = time_day + " " + "13:30:00", time_day + " " + "17:30:00" e_time = TimeFormat.random_time(start_time, end_time) e_day, e_hms = e_time.split(' ') now = TimeFormat.getnow() n_hms = now.split(' ')[-1] e_time_num = int(TimeFormat.string_toTimestamp_13(e_time)) n_time_num = int(TimeFormat.string_toTimestamp_13(e_day + ' ' + n_hms)) if e_time_num <= n_time_num: e_time = TimeFormat.get_day_around(1, e_day) + ' ' + e_hms return e_time
def modif_date(data): """ 初始化请求时修改时间 :param data: :return: """ data["order"][0]['inserttime'] = TimeFormat.getnow() start, end = get_data() data["order"][0]["dealtime"] = TimeFormat.random_time(start, end)
def test_028_api_78dk_platform_om_trans_findTransLogList_now(self): """ 交易流水列表 今天 :return: """ res = json.loads(WebAction.test_api_78dk_platform_om_trans_findTransLogList( pagesize=10, pagecurrent=1, enddate=TimeFormat.get_now_time_13(), transstate='', begindate=TimeFormat.string_toTimestamp_13(TimeFormat.get_day_start_time(0)), searchwhere='', transtype='')) Assertion.verity(res['code'], '10000') Assertion.verity(res['msg'], '成功')
def test_005_device_tracklist(self): """ Time :2019-04-03 author : 罗林 desc :获取设备轨迹 """ deviceid = cls.get_device_id() rs1 = cla.test_device_tracklist(starttime=tf.string_toTimestamp_10(tf.get_day_around(-7) + " 00:00:00"), endtime=tf.get_now_time(), positiontype=-1, deviceid=deviceid) ass.verity(json.loads(rs1)['message'], '请求成功')
def test_034_api_78dk_platform_om_bd_bdTj_date(self): """ BD统计 bd_state_enabled :return: """ res = json.loads(PlatformAction.test_api_78dk_platform_om_bd_bdTj(bdstate='bd_state_unknown', enddate=TimeFormat.get_day_around(30), pagecurrent=1, pagesize=10, searchwhere='', startdate=TimeFormat.get_day_around(-30))) Assertion.verity(res['code'], '10000') Assertion.verity(res['msg'], '成功')
def test_005_api_78dk_platform_sys_user_saveSystemUser_now_days(self): """ 合同列表查询(申请列表) 最近30天 :return: """ res = json.loads( WebAction.test_api_78dk_platform_om_contract_viewContracts( pagecurrent=1, orderstate='', enddate=TimeFormat.get_now_time_13(), begindate=TimeFormat.string_toTimestamp_13(TimeFormat.get_day_start_time(0)), pagesize=10, name='')) Assertion.verity(res['code'], '10000') Assertion.verity(res['msg'], '成功')
def get_time_step07(time_day): # 前开后闭 start_time, end_time = time_day + " " + "00:00:00", time_day + " " + "07:00:00" e_time = TimeFormat.random_time(start_time, end_time) e_day, e_hms = e_time.split(' ') now = TimeFormat.getnow() n_hms = now.split(' ')[-1] e_time_num = int(TimeFormat.string_toTimestamp_13(e_time)) n_time_num = int(TimeFormat.string_toTimestamp_13(e_day + ' ' + n_hms)) if e_time_num <= n_time_num: e_time = TimeFormat.get_day_around(1, e_day) + ' ' + e_hms return e_time
def test_002_api_78dk_clientapp_auth_messAuth_addCarInfo(self): """ Time :2019-04-25 author : 罗林 desc : 车辆认证 """ vehicleauthuuid, brandname, city, modelid, modelname, registertime, seriesid, seriesname = eq.get_info( 'vehicle_auth', 'vehicle_auth_uuid,brand_name,city,model_id,model_name,register_time,series_id,series_name') registertime = tf.string_toTimestamp_13(tf.datetime_toString(registertime, tf.FORMART1)) rs = ea_app.test_api_78dk_clientapp_auth_messAuth_addCarInfo( brandid='', seriesid=seriesid, city=city, registertime=registertime, modelid=modelid, vehicleauthuuid=vehicleauthuuid, seriesname=seriesname, brandname=brandname, modelname=modelname) ass.verity(json.loads(rs)['code'], "10000")
def test_sht_login(): """ 商户通 获取 token :return: """ redis_keys = redisDB.get_keys() for redis_key in redis_keys: if wx_name in redisDB.redis_get(redis_key): redisDB.del_name(redis_key) uuid_str = str(uuid.uuid4()).replace("-", "") wx_name_prefix = 'wxuser_' + wx_open_id wx_token = hashlib.md5( (wx_name_prefix + uuid_str).encode("utf-8")).hexdigest() wx_user_name = wx_name_prefix + wx_token wx_phone = 'https://wx.qlogo.cn/mmopen/vi_32' \ '/Q0j4TwGTfTJInkWfFr8ftFB8TYjb78xiamRc9bqRDkJKZHliaeHLdldQjeGdtqIzl659XHEcBxicBeRHQq5wBOvpw/132' c_time = TimeFormat.getnow() state = 'enabled' created = TimeFormat.string_toTimestamp_13(c_time) rows = ms.select_rows(DB, 'Tbl_WX_User', 'id', 'name="{}" AND state="enabled"'.format(wx_name)) if rows == 0: insert_dict = { "wx_user_uuid": wxUserUuid, "merchant_uuid": "", "name": wx_name, "phone": wx_phone, "open_id": wx_open_id, "is_master": wx_isMaster, "created": c_time, "updated": c_time, "state": state } ms.insert(DB, 'Tbl_WX_User', insert_dict) m_id = ms.select_one(DB, 'Tbl_WX_User', 'id', 'name="{}" AND state="enabled"'.format(wx_name)) wx_user_info = { 'created': created, 'id': m_id, 'isMaster': wx_isMaster, 'merchantUuid': '', 'name': wx_name, 'openId': wx_open_id, 'phone': wx_phone, 'state': state, 'token': wx_token, 'updated': created, 'wxUserUuid': wxUserUuid } redisDB.redis_set(wx_user_name, json.dumps(json.dumps(wx_user_info))) return wx_token
def get_data(times=None): if times == '1': start = TimeFormat.get_month_ago(1) end = TimeFormat.get_day_end_time(-7) elif times == '3': start = TimeFormat.get_month_ago(3) end = TimeFormat.get_month_ago(2) elif times == '6': start = TimeFormat.get_month_ago(6) end = TimeFormat.get_month_ago(5) elif times == '7': start, end = TimeFormat.get_day_start_time(-6), TimeFormat.getnow() else: start, end = TimeFormat.get_day_start_time(-6), TimeFormat.getnow() return start, end
def test_001_device(self): # 获取设备类型信息 r1 = json.loads(f.test_device_getDeviceType()) a.verity(r1['data'][0]['dictCode'], '1', '断言dictCode') a.verity(r1['data'][0]['dictName'], '有线', '断言dictName') a.verity(r1['data'][0]['id'], 20, '断言id') a.verity(r1['data'][1]['dictCode'], '0', '断言dictCode') a.verity(r1['data'][1]['dictName'], '无线', '断言dictName') a.verity(r1['data'][1]['id'], 21, '断言id') # 获取设备型号信息 r2 = json.loads(f.test_device_getDeviceMoudel('')) a.verity(r2['data'][0]['dictLevel'], 0, '断言dictLevel') a.verity(r2['data'][0]['dictName'], 'TK115', '断言dictName') a.verity(r2['data'][0]['id'], 22, '断言id') a.verity(r2['data'][1]['dictLevel'], 1, '断言dictLevel') a.verity(r2['data'][1]['dictName'], 'SZ-K3', '断言dictName') a.verity(r2['data'][1]['id'], 23, '断言id') a.verity(r2['data'][2]['dictLevel'], 1, '断言dictLevel') a.verity(r2['data'][2]['dictName'], 'GV25', '断言dictName') a.verity(r2['data'][2]['id'], 54, '断言id') a.verity(r2['data'][3]['dictLevel'], 0, '断言dictLevel') a.verity(r2['data'][3]['dictName'], 'GT740', '断言dictName') a.verity(r2['data'][3]['id'], 55, '断言id') # 获取机构信息 r3 = json.loads(f.test_device_getLowerOrg()) a.verity(r3['data'][0]['orgCode'], orgCode, '断言orgCode') a.verity(r3['data'][0]['name'], c.companyName, '断言组织机构名称') # 保存设备记录 f.test_device_save('', orgCode, c.devicetypecode, c.devicemoudelCode, c.deviceCode, '001', tf.getnow_day()) device_id = fs.get_device_id(c.deviceCode) # 更新设备记录 f.test_device_update(device_id, orgCode, c.devicetypecode, c.devicemoudelCode, c.deviceCode, '001', tf.getnow_day()) # 设备列表 r4 = json.loads(f.test_device_list('', 1, 10)) a.verity(r4['data']['pageNum'], 1, '断言pageNum') a.verity(r4['data']['pageSize'], 10, '断言pageSize') a.verityContain(r4['data']['record'], c.deviceCode, '断言修改后的deviceCode') # 获取设备详情 r5 = json.loads(f.test_device_detail(device_id)) a.verity(r5['data']['deviceCode'], c.deviceCode, '断言deviceCode') a.verity(r5['data']['id'], device_id, '断言device_id') a.verity(r5['data']['moudelCode'], c.devicemoudelCode, '断言moudelCode') a.verity(r5['data']['orgCode'], orgCode, '断言orgCode') a.verity(r5['data']['typeCode'], c.devicetypecode, '断言typeCode') # 删除设备记录 f.test_device_delete(device_id)
def test_014_gps(self): gpsid, gpscode = fs.get_gps()[0] finance_id = fs.get_car_id(c.car_owner) # 获取机构信息 r = json.loads(f.test_install_getLowerOrg()) a.verity(r['data'][0]['name'], c.companyName) a.verity(r['data'][0]['orgCode'], orgCode) # 获取GPS设备 f.test_install_getDevice(gpscode, orgCode) # 获取GPS类型 f.test_install_getGpsType() # 获取GPS型号 f.test_install_getGpsMoudel('有线') f.test_install_getGpsMoudel('无线') # 根据所在机构获取GPS设备信息 r1 = json.loads(f.test_install_getDeviceByOrgCode(gpsid, orgCode)) a.verityContain(r1['data'], gpscode) a.verityContain(r1['data'], str(gpsid)) # 安装车辆搜索联想 r2 = json.loads(f.test_install_installCarSearchAssociate(c.car_owner, orgCode)) a.verity(r2['data'][0]['fid'], finance_id) a.verity(r2['data'][0]['carNo'], c.carNo) a.verity(r2['data'][0]['carNoAndOwner'], c.carNo + ' ' + c.car_owner) # 设备安装 保存GPS安装记录 r3 = json.loads(f.test_install_saveGpsInstallRecord(finance_id, gpsid, '', '1', '1', tf.getnow_day())) gps_finance_id = fs.get_gps_finance_id(gpsid, finance_id) a.verity(r3['data'], gps_finance_id) # 获取GPS安装记录详情 r4 = json.loads(f.test_install_getGpsInstallDetail(gps_finance_id)) a.verity(r4['data']['id'], gps_finance_id) a.verity(r4['data']['orgCode'], orgCode) a.verity(r4['data']['financeId'], finance_id) a.verity(r4['data']['gpsId'], gpsid) a.verity(r4['data']['gpsCode'], gpscode) a.verityIn(r4['data']['installDate'], str(tf.getnow_day())) # 根据所在机构获取GPS设备信息 f.test_install_getDeviceByOrgCode('', orgCode) # 更新GPS安装记录 f.test_install_updateGpsInstallRecord(finance_id, gpsid, gps_finance_id, '2', '2', tf.getnow_day()) # Gps安装记录列表 f.test_install_findGpsInstallRecord('', 1, 10) # 拆机,将gps安装记录拆除 f.test_install_dismantle(gps_finance_id) f.test_install_saveGpsInstallRecord(finance_id, gpsid, '', '1', '1', tf.getnow_day()) gps_finance_id = fs.get_gps_finance_id(gpsid, finance_id) # 删除安装记录,安装记录出错了,将错误数据删除 f.test_install_deleteRecord(gps_finance_id)
def test_018_equipment_update(self): """ Time :2019-04-08 author : 罗林 desc :新增设备/编辑设备 """ device_id = fis.get_device_id(new_device_code) model = json.loads(cla.test_equipment_model(type=1))["data"][-1]["code"] rs1 = cla.test_equipment_update(sim=sim, model=model, organizationid=org_id, type=1, no=new_device_code, id=device_id, instoragedate=tf.get_now_time()) ass.verity(json.loads(rs1)['message'], '请求成功')
def test_025_install_update(self): """ Time :2019-04-08 author : 罗林 desc :修改安装 """ gps_finance_id = fis.get_gps_finance_id(fis.get_device_id(new_device_code), fis.get_car_info(car_owner)) imageid = cls.get_file_id(gps_finance_id) rs1 = cla.test_install_update(date=tf.get_now_time(), position='电瓶', imageid=imageid, username=installer, id=gps_finance_id) ass.verity(json.loads(rs1)['message'], '请求成功')
def modif_date(data): """ 初始化请求时修改时间 :param data: :return: """ sev_time = TimeFormat.get_month_ago(1) sev_month = '-'.join(sev_time.split('-')[:2]) sev_day = sev_time.split(' ')[0] sev_hms = data["calls"][0]['items'][0]['time'].split(' ')[-1] month_start_date, month_end_date = TimeFormat.get_FirstAndLastDay_month( sev_day) time_sec = sev_day + ' ' + sev_hms data["bills"][0]['bill_month'] = sev_month data["bills"][0]['bill_start_date'] = month_start_date data["bills"][0]['bill_end_date'] = month_end_date data["calls"][0]['bill_month'] = sev_month data["calls"][0]['items'][0]['time'] = time_sec data["smses"][0]['bill_month'] = sev_month data["smses"][0]['items'][0]['time'] = time_sec.replace(' ', '-')
def test_006_api_78dk_clientapp_tools_carEva_vinEva(self): """ Time :2019-04-25 author : 罗林 desc : VIN估价 """ rs = ea_app.test_api_78dk_clientapp_tools_carEva_vinEva( citycode=510100, miles=10000, oncardate=tf.string_toTimestamp_13('2015-04-25 00:00:00'), vincode=vincode) ass.verity(json.loads(rs)['code'], "10000")
def test_005_api_78dk_clientapp_tools_carEva_carTypeEva(self): """ Time :2019-04-25 author : 罗林 desc : 车型估价 """ rs = ea_app.test_api_78dk_clientapp_tools_carEva_carTypeEva( carcode=car_code, citycode=510100, miles=10000, oncardate=tf.string_toTimestamp_13('2015-04-25 00:00:00'), brandid=1, modelname='奥迪A3') ass.verity(json.loads(rs)['code'], "10000")
def testOperatorETL(self, data): LOGGER.info(data) LOGGER.info( ('开始执行第【{0}】条测试用例:【{1}】'.format(data['序号'], data['描述'])).center(80, '-')) t1 = time.clock() params = copy.deepcopy(etl_config.operatorETL) operator_analysis.modif_date(params) modif_keys = re.split('[;;]', data['修改key']) modif_values = re.split('[;;]', data['修改值']) for i in range(len(modif_keys)): operator_analysis.modif(params, modif_keys[i], modif_values[i]) rs = json.loads(operator_etl(data=params)) Assertion.verity(rs['status'], 200, data) Assertion.verity(rs['msg'], '成功', data) premise = re.split('[;;]', data['分析key']) result_keys = re.split('[;;]', data['结果key']) result_values = re.split('[;;]', data['断言结果']) for i in range(len(result_keys)): if data['分析key']: if premise[i] in ('power_off_day', 'continue_power_off_days', 'no_dial_day', 'no_call_day') and result_keys[i] in ( 'item_1m', 'item_3m', 'item_6m'): result_value = operator_analysis.get_days( result_values[i], premise[i], params) else: result_value = str(str_to_num(result_values[i])) m = '{0},第{1}条结果, {2}'.format(data, i + 1, result_keys[i]) Assertion.verity( operator_analysis.get_result(rs, result_keys[i], premise[i]), result_value, m) elif data['结果key']: if result_keys[i] == 'call_month': result_value = TimeFormat.get_month_around( -int(result_values[i])) else: result_value = str(str_to_num(result_values[i])) m = '{0},第{1}条结果, {2}'.format(data, i + 1, result_keys[i]) Assertion.verity( operator_analysis.get_result(rs, result_keys[i]), result_value, m) LOGGER.info(('第【{0}】条测试用例:【{2}】执行完成,执行时间【{1}】'.format( data['序号'], float(time.clock() - t1), data['描述'])).center(80, '-'))
def get_days(month, premise, params): """ 几月距离今天的天数 :param month: 几月 :param premise: 请求参数 :param params: 请求参数 :return: """ calls_items = list() for items in params['calls']: calls_items.extend(items['items']) calls_days = list() if premise == 'no_dial_day': dial_calls_days = list( filter(lambda x: x['dial_type'] == 'dial', calls_items)) calls_days = [t['time'] for t in dial_calls_days] elif premise == 'no_call_day': calls_days = [t['time'] for t in calls_items] elif premise in ('power_off_day', 'continue_power_off_days'): calls_days = [t['time'] for t in calls_items] smses_items = list() for items in params['smses']: smses_items.extend(items['items']) smses_days = [ '-'.join(t['time'].split('-')[:3]) + ' ' + t['time'].split('-')[-1] for t in smses_items ] calls_days.extend(smses_days) on_days = list(set(calls_days)) now, times = TimeFormat.getnow().split(' ') now_time = TimeFormat.get_now_time_13() if month == '7': day = TimeFormat.get_day_around(-7) else: time_day = TimeFormat.get_month_ago(int(month)) day = time_day.split(' ')[0] day_time = TimeFormat.string_toTimestamp_13(day + ' ' + times) days_num = len( list( filter( lambda x: day_time < int(TimeFormat.string_toTimestamp_13(x)) <= now_time, on_days))) return str(TimeFormat.time_between_day(day, now) - days_num)
def get_data(times): start_time = tianxing_etl['json_data']['data']['report_time'] start = start_time.split(' ')[0] if times == '1' or times == 1: end = TimeFormat.get_day_around(-27, start) elif times == '3' or times == 3: end = TimeFormat.get_month_ago(2, start_time) elif times == '6' or times == 6: end = TimeFormat.get_month_ago(5, start_time) elif times == '7' or times == 7: end = TimeFormat.get_day_around(-6, start) elif times == '12' or times == 12: end = TimeFormat.get_month_ago(11, start_time) else: end = TimeFormat.get_month_ago(8, start_time) return end
def get_select_info(rap, version_id): """ 获取查询信息 :param rap: rap数据 :param version_id: 版本信息 :return: 查询列 select_col, 数据字典 value_dict """ is_exe, update_date = 'N', TimeFormat.getnow_day() select_col = ['dict_id', 'module', 'page', 'page_name', 'api_name', 'api_type', 'api_address', 'parameters', 'parameter_description', 'response_parameter', 'response_parameter_description'] value_dict = dict(zip(select_col, rap)) if version_id != '': value_dict['version_id'] = version_id value_dict['is_exe'] = is_exe value_dict['update_date'] = update_date value_dict['api_name'] = re.sub('[\n\t\r]', '', value_dict['api_name']) if value_dict['dict_id'] == 1 and 'manage' in value_dict['api_name']: value_dict['module'] = 'manage' select_col.insert(1, 'version_id') LOG.debug('查询列{}'.format(select_col)) LOG.debug('数据字典{}'.format(value_dict)) return select_col, value_dict
def test_api_78dk_sht_mm_saveMerchantImg(uuid, key, image_path): """ 商户通商户信息接口,保存单张图片 :param uuid: 商户UUID :param key: 图片分类 :param image_path: 图片地址 :return: response.text """ start_time = time.time() ms.update(ms.get_conn(), 't_rap', 'is_exe = "Y"', 'id = 1401') requesturl = ShtAction.baseUrl + "/api/78dk/sht/mm/saveMerchantImg" LOGGER.info("商户通商户信息接口,保存单张图片请求地址:【{}】".format(requesturl)) params = dict() params["uuid"] = uuid params["key"] = key params["token"] = ShtAction.LICENCES fl = open(image_path, 'rb') API_TEST_HEADERS = {"Cache-Control": "no-cache"} multipart_encoder = MultipartEncoder(fields={ 'file': (image_path, fl, 'image/jpg'), 'key': key, 'token': ShtAction.LICENCES }, boundary=TimeFormat.get_now_time_13()) API_TEST_HEADERS['Content-Type'] = multipart_encoder.content_type API_TEST_HEADERS['token'] = ShtAction.LICENCES LOGGER.info("商户通商户信息接口,保存单张图片请求头参数:【{}】".format(API_TEST_HEADERS)) LOGGER.info("商户通商户信息接口,保存单张图片请求参数:【{0}】,请求文件地址:【{1}】".format( params, image_path)) response = rq.post(requesturl, params=params, data=multipart_encoder, headers=API_TEST_HEADERS) fl.close() LOGGER.info("请求结果参数:【{}】".format(response.text)) Assertion.verity(response.status_code, 200, "状态码检查") LOGGER.info("请求接口耗时:【{}】".format(time.time() - start_time)) return response.text
def test_005_device_update(self): device_id = fs.get_device_id(c.deviceCode) # 更新设备记录 f.test_device_update(device_id, orgCode, c.devicetypecode, c.devicemoudelCode, c.deviceCode, '001', tf.getnow_day())
def get_result(result, result_key, params): """ 获取 测试结果数据 :param result: 请求结果数据 :param result_key: 结果key值 :param params: 请求数据 :return: address_max_city_1m:最近1个月订单中收货最多的收货地址所在市 address_max_city_3m:最近3个月订单中收货最多的收货地址所在市 address_max_city_6m:最近6个月订单中收货最多的收货地址所在市 address_max_detail_1m:最近1个月订单中收货最多的收货地址 address_max_detail_3m:最近3个月订单中收货最多的收货地址 address_max_detail_6m:最近6个月订单中收货最多的收货地址 address_max_district_1m:最近1个月订单中收货最多的收货地址所在区县 address_max_district_3m:最近3个月订单中收货最多的收货地址所在区县 address_max_district_6m:最近6个月订单中收货最多的收货地址所在区县 address_max_name_1m:最近1个月订单中收货最多的收货人 address_max_name_3m:最近3个月订单中收货最多的收货人 address_max_name_6m:最近6个月订单中收货最多的收货人 address_max_phone_1m:最近1个月订单中收货最多的手机号码 address_max_phone_3m:最近3个月订单中收货最多的手机号码 address_max_phone_6m:最近6个月订单中收货最多的手机号码 address_max_province_1m:最近1个月订单中收货最多的收货地址所在省 address_max_province_3m:最近3个月订单中收货最多的收货地址所在省 address_max_province_6m:最近6个月订单中收货最多的收货地址所在省 order_avg_amount_1m:最近1个月订单的平均金额 order_avg_amount_3m:最近3个月订单的平均金额 order_avg_amount_6m:最近6个月订单的平均金额 order_avg_pkg_1m:最近1个月订单的平均商品数 order_avg_pkg_3m:最近3个月订单的平均商品数 order_avg_pkg_6m:最近6个月订单的平均商品数 order_max_amount_1m:最近1个月订单的最高金额 order_max_amount_3m:最近3个月订单的最高金额 order_max_amount_6m:最近6个月订单的最高金额 order_max_pkg_1m:最近1个月订单的最高商品数 order_max_pkg_3m:最近3个月订单的最高商品数 order_max_pkg_6m:最近6个月订单的最高商品数 order_sum_1m:最近1个月订单的总订单数 order_sum_3m:最近3个月订单的总订单数 order_sum_6m:最近6个月订单的总订单数 order_sum_amount_1m:最近1个月订单的总金额 order_sum_amount_3m:最近3个月订单的总金额 order_sum_amount_6m:最近6个月订单的总金额 order_sum_pkg_1m:最近1个月订单的总商品数 order_sum_pkg_3m:最近3个月订单的总商品数 order_sum_pkg_6m:最近6个月订单的总商品数 all_fee:订单总额 all_cnt:订单数量 all_prd_cnt:订单商品数量 personal_fee:本人订单总额 personal_cnt:本人订单数量 personal_proportion:本人订单商品占比 personal_prd_cnt:本人订单商品数量 virtual_fee:虚拟物品订单总额 virtual_cnt:虚拟物品订单数量 virtual_prd_cnt:虚拟物品订单商品数量 virtual_proportion:虚拟物品订单总额占比 telephone_cnt_dict:收货人联系电话次数统计字典 telephone_proportion_dict:收货人联系电话占比统计字典 telephone_list:收货人联系电话列表 """ orders = params["order"] if any(filter(lambda x: x['status'] in ['充值成功', '已完成'], orders)): status_num = 0 for i in range(len(orders)): if orders[i]['status'] in ['充值成功', '已完成']: status_num = i month = "".join(orders[status_num]["dealtime"].split('-')[:2]) else: month = ''.join(TimeFormat.getnow().split('-')[:2]) consumption_analysis_dict = result["consumption_analysis_dict"][month] if result_key in ( "order_sum_1m", "order_sum_amount_1m", "order_max_amount_1m", "order_avg_amount_1m", "order_sum_pkg_1m", "order_max_pkg_1m", "order_avg_pkg_1m", "address_max_name_1m", "address_max_phone_1m", "address_max_detail_1m", "address_max_province_1m", "address_max_city_1m", "address_max_district_1m", "order_sum_3m", "order_sum_amount_3m", "order_max_amount_3m", "order_avg_amount_3m", "order_sum_pkg_3m", "order_max_pkg_3m", "order_avg_pkg_3m", "address_max_name_3m", "address_max_phone_3m", "address_max_detail_3m", "address_max_province_3m", "address_max_city_3m", "address_max_district_3m", "order_sum_6m", "order_sum_amount_6m", "order_max_amount_6m", "order_avg_amount_6m", "order_sum_pkg_6m", "order_max_pkg_6m", "order_avg_pkg_6m", "address_max_name_6m", "address_max_phone_6m", "address_max_detail_6m", "address_max_province_6m", "address_max_city_6m", "address_max_district_6m"): return str(result["order_result_dict"][result_key]) elif result_key in ("all_fee", "all_cnt", "all_prd_cnt", "personal_fee", "personal_cnt", "personal_prd_cnt", "virtual_fee", "virtual_cnt", "virtual_prd_cnt", "personal_proportion", "virtual_proportion"): return str(consumption_analysis_dict[result_key]) elif result_key in ("telephone_cnt_dict", "telephone_proportion_dict"): result_dict = consumption_analysis_dict[result_key] value_list = [t for t in result_dict.values()] if len(result_dict) >= 1: return str(value_list[0]) else: return '' elif result_key == "telephone_list": telephone_list = consumption_analysis_dict["telephone_list"] if len(telephone_list) >= 1: return str(telephone_list[0]) else: return '' elif result_key in ("top_n_address", "receiver_name", "receiver_phone", "first_create_time", "last_create_time", "order_sum_fee", "order_cnt"): top_address_dict = result["top_address_dict"] if "top_1" in top_address_dict.keys(): return str(top_address_dict["top_1"][result_key]) else: return '' elif result_key == "first_deal_delta_monhs": return str(result["base_analyse_dict"][result_key])
def test_004_device_save(self): # 保存设备记录 f.test_device_save('', orgCode, c.devicetypecode, c.devicemoudelCode, c.deviceCode, '001', tf.getnow_day())
def modif(data, modif_key, modif_value): """ 修改京东请求数据 :param data: :param modif_key: :param modif_value: :return: address: 收件人地址 status:订单状态 dealtime:下单时间 name:收件人姓名 telephone:收件人电话 amount:订单总价 goodsPrice:商品单价 goodsNum:商品数量 goodsName:商品名称 amount_total: 总价格 orderNum:订单数量,查询第一条订单后循环生成相同订单,配合其他条件使用 """ if modif_key == "address": data["order"][0]["address"] = modif_value elif modif_key == "status": data["order"][0]["status"] = modif_value elif modif_key == "dealtime": start, end = get_data(modif_value) data["order"][0]["dealtime"] = TimeFormat.random_time(start, end) elif modif_key == "first_deal_time": if modif_value == '7': data["first_deal_time"] = TimeFormat.get_day_end_time(-7) else: # num = int(modif_value) * 30 data["first_deal_time"] = TimeFormat.get_month_ago( int(modif_value)) elif modif_key == "name": data["order"][0]["name"] = modif_value elif modif_key == "telephone": data["order"][0]["telephone"] = modif_value elif modif_key == "amount": data["order"][0]["amount"] = modif_value elif modif_key == "goodsPrice": data["order"][0]["goods"][0]["goodsPrice"] = FileUtils.str_to_num( modif_value) elif modif_key == "goodsNum": data["order"][0]["goods"][0]["goodsNum"] = FileUtils.str_to_num( modif_value) elif modif_key == "goodsName": data["order"][0]["goods"][0]["goodsName"] = modif_value elif modif_key == "amount_total": data["order"][0]["amount_total"] = "商品总金额:¥{}".format( FileUtils.str_to_num(modif_value)) elif modif_key == 'orderNum': order_info = data["order"][0] dealtime = order_info['dealtime'].split(' ')[0] orders_info = list() for _ in range(int(modif_value)): o = copy.deepcopy(order_info) o['orderid'] = MockData.strNumber(11) o['dealtime'] = TimeFormat.random_time(dealtime + ' 00:00:01', dealtime + ' 23:59:59') orders_info.append(o) data["order"] = orders_info
def special(key, value): """ 处理特殊规则 :param key: 规则key值 :param value: 修改规则值 :return: """ if key in [ 'V04_1010', 'V04_1011', 'V04_1012', 'V05_1015', 'V05_1016', 'V05_1017' ]: # value 传入数据格式 int 如5,-7 result = TimeFormat.get_day_start_time(FileUtils.str_to_num(value)) elif key in ['V01_3001', 'V01_3002', 'V01_1001']: # value 传入数据格式 int 如5,-7 , 0.0, 0.1 result = FileUtils.str_to_num(value) elif key == 'V03_1045': V03_1045 = [{ "call_cnt_6m": 304, "peer_num": "15775800488", "call_cnt_1m": 6, "call_cnt_3m": 140, "call_cnt_1w": 9 }] # value 传入数据格式 phone;num v = re.split('[;;]', value) num = FileUtils.str_to_num(str(v[1])) tmp = { "call_cnt_6m": 304, "peer_num": v[0], "call_cnt_1m": num, "call_cnt_3m": 140, "call_cnt_1w": 9 } V03_1045.append(tmp) result = V03_1045 elif key == 'V03_1046': # value传入格式phone1;phone2;phone3 v = re.split('[;;]', value) result = [{ "top_item": [{ "peer_number": v[0] }, { "peer_number": v[1] }, { "peer_number": v[2] }], "key": "peer_num_top3_3m" }, { "top_item": [{ "peer_number": v[3] }, { "peer_number": v[4] }, { "peer_number": v[5] }], "key": "peer_num_top3_6m" }] elif key == 'V01_1010': # value传入格式 intV05_1015 result = str([{ "name": "{}".format(fake.name()), "phones": ["{}".format(fake.phone_number())] } for _ in range(int(FileUtils.str_to_num(value))) ]).replace('\'', '\"') elif key == 'V03_1002': result = str(int(FileUtils.str_to_num(value))) else: result = value return result
def modif(data, modif_key, modif_value): """ 修改请求数据 :param data: 请求数据 :param modif_key: 修改请求数据参数 :param modif_value: 修改值 :return: carrier: 运营商类型 (联通、移动、电信) open_time: 开户时长 (天) sex:男,女 age: 年龄 total_fee:账期内所有费用 web_fee:网络流量消费金额(分) voice_fee:通话消费金额(分) sms_fee:短信消费金额(分) extra_service_fee:增值业务消费金额(分) extra_fee:其它消费金额(分) base_fee:基础消费金额 sms_cnt:短信次数 (数字) sms_fees:短信费用 location:朋友圈中心城市 peer_number:朋友联系数量 location_type:号码类型;国内通话 dial_type:主叫,被叫 DAIL,DAILED duration: 通话时长(秒) fee: 通话费用 time: 通话时段 (早晨,上午,中午,下午,傍晚,晚上,凌晨,深夜) 早晨(5:30:00-9:00:00) 上午(9:00:00-11:30:00) 中午(11:30:00-13:30:00) 下午(13:30:00-17:30:00) 傍晚(17:30:00-19:30:00) 晚上(19:30:00-23:30:00) 凌晨(23:30:00-01:30:00) 深夜(01:30:00-05:30:00) time2: 通话时段 早晨(5:30-11:30) 中午(11:30-13:30) 下午(13:30-17:30) 晚上(17:30-23:30) 凌晨(23:30-5:30) time3: 通话时段 0-7点,不用输入参数修改值 total_size:通话次数 bill_month:通话月份 (7,1,3,6) calls: 通话信息条数 (数字) """ if re.sub('\s+', '', modif_value) == '': modif_value = 'null' if modif_key == 'carrier': # modif_value 输入 联通、移动、电信 if modif_value in carriers.keys(): modif_value = carriers[modif_value] data["carrier"] = modif_value elif modif_key == 'open_time': # 输入数字,距离当前时间的天数 if modif_value.isdigit(): modif_value = TimeFormat.get_day_around(-int(modif_value)) data["open_time"] = modif_value elif modif_key == 'sex': # 输入男、女,自动生成 idcard idcard = list(data["idcard"]) if modif_value == '女': v = random.choice('02468') idcard[16] = str(v) data["idcard"] = ''.join(idcard) elif modif_value == '男': v = random.choice('13579') idcard[16] = str(v) data["idcard"] = ''.join(idcard) else: data["idcard"] = modif_value elif modif_key == 'age': # 输入年龄,自动生成 idcard if modif_value.isdigit(): idcard = list(data["idcard"]) time_now = TimeFormat.getnow_day() year, month, day = time_now.split('-') y = int(year) - int(modif_value) idcard[6:14] = ''.join([str(y), month, day]) data["idcard"] = ''.join(idcard) else: data["idcard"] = modif_value elif modif_key == 'city': data["city"] = modif_value elif modif_key == 'total_fee': data["bills"][0]["total_fee"] = modif_value elif modif_key == 'web_fee': data["bills"][0]["web_fee"] = modif_value elif modif_key == 'voice_fee': data["bills"][0]["voice_fee"] = modif_value elif modif_key == 'sms_fee': data["bills"][0]["sms_fee"] = modif_value elif modif_key == 'extra_service_fee': data["bills"][0]["extra_service_fee"] = modif_value elif modif_key == 'extra_fee': data["bills"][0]["extra_fee"] = modif_value elif modif_key == 'base_fee': data["bills"][0]["base_fee"] = modif_value elif modif_key == 'sms_cnt': # 输入数字, 自动生成对应数字的短信条数 if modif_value.isdigit(): sms = data['smses'][0] data['smses'] = [sms for _ in range(int(modif_value))] else: data['smses'] = [] elif modif_key == 'sms_fees': data['smses'][0]['items'][0]['fee'] = modif_value elif modif_key == 'location': data["calls"][0]['items'][0]['location'] = modif_value elif modif_key == 'peer_number': data["calls"][0]['items'][0]['peer_number'] = modif_value elif modif_key == 'location_type': data["calls"][0]['items'][0]['location_type'] = modif_value elif modif_key == 'dial_type': # 输入 DAIL 或者 DAILED calls = data["calls"][0] call = copy.deepcopy(calls) call['items'][0]['dial_type'] = modif_value data["calls"][0] = call elif modif_key == 'duration': if modif_value.isdigit(): modif_value = int(modif_value) data["calls"][0]['items'][0]['duration'] = modif_value elif modif_key == 'fee': data["calls"][0]['items'][0]['fee'] = modif_value elif modif_key == 'time': # 输入时间段 # 早晨(5:30:00-9:00:00) # 上午(9:00:00-11:30:00) # 中午(11:30:00-13:30:00) # 下午(13:30:00-17:30:00) # 傍晚(17:30:00-19:30:00) # 晚上(19:30:00-23:30:00) # 凌晨(23:30:00-01:30:00) # 深夜(01:30:00-05:30:00) if modif_value in ('早晨', '上午', '中午', '下午', '傍晚', '晚上', '凌晨', '深夜'): sev_time = data["calls"][0]['items'][0]['time'] sev_day = sev_time.split(' ')[0] data["calls"][0]['items'][0]['time'] = get_time_step( sev_day, modif_value) else: data["calls"][0]['items'][0]['time'] = modif_value elif modif_key == 'time2': # 输入时间段 # 早晨(5:30-11:30) # 中午(11:30-13:30) # 下午(13:30-17:30) # 晚上(17:30-23:30) # 凌晨(23:30-5:30) if modif_value in ('早晨', '中午', '下午', '晚上', '凌晨'): sev_time = data["calls"][0]['items'][0]['time'] sev_day = sev_time.split(' ')[0] data["calls"][0]['items'][0]['time'] = get_time_step2( sev_day, modif_value) else: data["calls"][0]['items'][0]['time'] = modif_value elif modif_key == 'time3': # 输入时间段, 不用输入修改参数值, 直接获取 0-7点 sev_time = data["calls"][0]['items'][0]['time'] sev_day = sev_time.split(' ')[0] data["calls"][0]['items'][0]['time'] = get_time_step07(sev_day) elif modif_key == 'total_size': if modif_value.isdigit(): modif_value = int(modif_value) data["calls"][0]['total_size'] = modif_value elif modif_key == 'bill_month': # 输入修改的月份 7,1,3,6; 7代表7天,其余的都是月份 times = data["calls"][0]['items'][0]['time'] time_hmc = times.split(' ')[-1] if modif_value == '7': start_day = TimeFormat.get_day_around(-7) bill_month = '-'.join(start_day.split('-')[:2]) month_start_date, month_end_date = TimeFormat.get_FirstAndLastDay_month( bill_month) e_time = start_day + ' ' + time_hmc e_time_num = int(TimeFormat.string_toTimestamp_13(e_time)) n_hms = TimeFormat.getnow().split(' ')[-1] n_time_num = int( TimeFormat.string_toTimestamp_13(start_day + ' ' + n_hms)) if e_time_num <= n_time_num: e_time = TimeFormat.get_day_around(1, start_day) + ' ' + time_hmc data["calls"][0]['bill_month'] = bill_month data["calls"][0]['items'][0]['time'] = e_time data["smses"][0]['bill_month'] = bill_month data["smses"][0]['items'][0]['time'] = e_time.replace(' ', '-') data["bills"][0]['bill_month'] = bill_month data["bills"][0]['bill_start_date'] = month_start_date data["bills"][0]['bill_end_date'] = month_end_date elif modif_value in ('1', '3', '6'): month_day = TimeFormat.get_month_day_ago(int(modif_value)) year, month, day = month_day.split('-') bill_month = year + '-' + month month_start_date, month_end_date = TimeFormat.get_FirstAndLastDay_month( bill_month) data["calls"][0]['bill_month'] = bill_month e_time = month_day + ' ' + time_hmc e_time_num = int(TimeFormat.string_toTimestamp_13(e_time)) n_hms = TimeFormat.getnow().split(' ')[-1] n_time_num = int( TimeFormat.string_toTimestamp_13(month_day + ' ' + n_hms)) if e_time_num <= n_time_num: e_time = TimeFormat.get_day_around(1, month_day) + ' ' + time_hmc data["calls"][0]['items'][0]['time'] = e_time data["smses"][0]['bill_month'] = bill_month data["smses"][0]['items'][0]['time'] = e_time.replace(' ', '-') data["bills"][0]['bill_month'] = bill_month data["bills"][0]['bill_start_date'] = month_start_date data["bills"][0]['bill_end_date'] = month_end_date else: data["calls"][0]['bill_month'] = modif_value data["smses"][0]['bill_month'] = modif_value data["bills"][0]['bill_month'] = modif_value elif modif_key == 'calls': # 输入数字,自动生成通话条数 if modif_value.isdigit(): calls = data["calls"][0] call = copy.deepcopy(calls) data["calls"] = [call for _ in range(int(modif_value))] else: data["calls"] = []
def get_jgPushId(): # 手机号 + 毫秒级时间戳(13位) jgPushId = "{0}{1}".format(app_phone, TimeFormat.get_now_time_13()) return jgPushId
def yys_modif(yys_data, modif_key, modif_value): """ 运营商json 数据修改 :param yys_data: 运营商json 数据 :param modif_key: 需要修改的key :param modif_value: 修改后的值 :return: yys_data #key定义 V03_1001 : 账户余额 V03_1002 : 开户时长 # V03_1003 : 手机号是否实名认证 # V03_1004 : 黑中介分数 # V03_1005 : 直接联系人人数 V03_1006 : 直接联系人中黑名单人数 V03_1007 : 间接联系人中黑名单人数 V03_1008 : 直接联系人中引起间接黑名单占比 V03_1009 : 查询过该用户的相关企业数量 V03_1010 : 电话号码注册过的相关企业数量 V03_1011 : 申请人姓名+身份证号码是否出现在法院黑名单 # V03_1012 : 申请人姓名+身份证号码是否出现在金融机构黑名单 # V03_1013 : 申请人姓名+手机号码是否出现在金融机构黑名单 # V03_1014 : 近1月关机天数 V03_1015 : 近3月关机天数 V03_1016 : 近6月关机天数 V03_1017 : 近1月连续3天以上关机次数 V03_1018 : 近3月连续3天以上关机次数 V03_1019 : 近6月连续3天以上关机次数 V03_1020 : 近1月无通话天数 V03_1021 : 近3月无通话天数 V03_1022 : 近6月无通话天数 # V03_1023 : 近1月互通电话的号码数目 V03_1024 : 近3月互通电话的号码数目 # V03_1025 : 近6月互通电话的号码数目 # V03_1026 : 与贷款公司近1月通话次数 V03_1027 : 与贷款公司近3月通话次数 V03_1028 : 与贷款公司近6月通话次数 V03_1029 : 与贷款公司近1月通话时长 V03_1030 : 与贷款公司近3月通话时长 V03_1031 : 与贷款公司近6月通话时长 V03_1032 : 与催收公司近1月通话次数 V03_1033 : 与催收公司近3月通话次数 V03_1034 : 与催收公司近6月通话次数 V03_1035 : 与催收公司近1月通话时长 V03_1036 : 与催收公司近3月通话时长 V03_1037 : 与催收公司近6月通话时长 V03_1038 : 近1月消费总金额 V03_1039 : 近3月消费总金额 V03_1040 : 近6月消费总金额 V03_1041 : 近3月平均消费金额 V03_1042 : 近6月平均消费金额 V03_1043 : 近3月朋友圈数量 V03_1044 : 近6月朋友圈数量 V03_1045 : 通话详单 V03_1046 : 朋友圈联系人top3列表 V03_1047 : 夜间活动情况 V03_1048 : 近3月朋友圈是否在本地 V03_1049 : 近6月朋友圈是否在本地 """ try: if modif_key == 'V03_1002': # 开户时长(月) m_value = TimeFormat.get_day_around( FileUtils.str_to_num(str(modif_value))) LOGGER.info('V03_1002 修改值为{}'.format(m_value)) yys_data["open_time"] = m_value elif modif_key == 'V03_1003': yys_data["state"] = modif_value # 是否实名 else: raise KeyError('the modif_key {} is error'.format(modif_key)) except Exception as e: LOGGER.error(e) return yys_data