def get_user_customer_month(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'用户月用气量:{data}') return data
def get_report_data(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'读数上报:{data}') return data
def get_table_state(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'表具状态:{data}') return data
def test_electricity_status(self, table_id, start_time, meter_reading, meterCode): logger.info("$电量状态验证--{}$".format(table_id)) table_info = request_data.get_user_info( config_data.get_user_info_ags(meterCode)).get('data') if float(table_info["electricQuantity"]) < 5: pytest.fail("表具{}:电量接近耗尽,当前电量 {}%".format( table_id, table_info["electricQuantity"]))
def get_history_data(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'历史记录:{data}') return data.get("data")
def test_valve_status(self, table_id, start_time, meter_reading, meterCode): logger.info("$阀门状态验证--{}$".format(table_id)) table_info = request_data.get_user_info( config_data.get_user_info_ags(meterCode)).get('data') if table_info["valveStatus"] == '1': pytest.fail("表具{}:阀门关闭".format(table_id))
def get_success_rate(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'抄表成功率:{data}') return data
def get_gas_consumption(self, url, data): data = base_request.send_request( "post", url, data=json.dumps(data), header=self.handle_info["Handler"]).json() logger.info(f'用气量:{data}') return data
def __load_excel(self, file_path): ''' 加载sheet ''' if not os.path.exists(file_path): logger.info("文件路径不存在:{0}".format(file_path)) raise FileNotFoundError("文件不存在:{}".format(file_path)) return openpyxl.load_workbook(file_path)
def test_success_rate(self,table_id,start_time,meter_reading,meterCode): logger.info("$上报成功率--{}$".format(table_id)) url,data = config_data.get_success_rate_info(meterCode) results = request_data.get_success_rate(url,data) if results["msg"] == "data节点数据为空": pytest.fail("表具{}:在{} 时间段内没有上报数据".format(table_id,start_time)) success_rate = (24 - len(self.no_time_report[table_id]))/ 24 assert success_rate == results["data"][0]["value"] ,table_id
def login(self, url, data): self.handle_info = handle_json.read_json(handler_path) j_data = base_request.send_request("post", url, data).json() logger.info(f"登录请求:{j_data}") self.handle_info['Handler']['companyId'] = j_data.get( 'data')["companyId"] self.handle_info['Handler']['userId'] = j_data.get('data')["userId"] logger.info(f"最新的handle:{ self.handle_info}") handle_json.write_json(self.handle_info, handler_path)
def test_meter_code(self, table_id, start_time, meter_reading): logger.info("$ID获取--{}$".format(table_id)) self.info_items = [] url, data = config_data.get_table_info(table_id) results = request_data.get_table_id(url, data) self.info_items.append(table_id) self.info_items.append(start_time) self.info_items.append(meter_reading) self.info_items.append(results["meterId"]) self.data.append(self.info_items)
def test_money_status(self, table_id, start_time, meter_reading, meterCode): logger.info("$金额校验--{}$".format(table_id)) table_info = request_data.get_user_info(config_data.get_user_info_ags(meterCode)).get('data') if not table_info['customerCode']: pytest.skip("没有绑定用户跳过此表具") config_info = request_data.get_config_info(config_data.get_config_info_data(meterCode)).get('data') if config_info['billingMode']=='1': if table_info['balance']<10: pytest.fail("表具:{} 目前余额:{}".format(table_id,table_info['balance']))
def test_reading_report(self, table_id, start_time, meter_reading, meterCode): logger.info("$读数上报--{}$".format(table_id)) start_time, end_time = handle_time.update_data_time(start_time, 1) url, data = config_data.get_report_info(meterCode, start_time, end_time) results = request_data.get_report_data(url, data) if results["msg"] == "data节点数据为空": pytest.fail("表具:{},在{}:00:00 时间段左右没有上报数据".format( table_id, start_time))
def get_user_info(self, config): os.environ["host"] = handle_ini.get_content(config, "host") os.environ["companyAccount"] = handle_ini.get_content( config, "companyAccount") os.environ["account"] = handle_ini.get_content(config, "account") os.environ["password"] = handle_ini.get_content(config, "password") logger.info("当前测试配置:\n域名:{}\n燃气公司:{}\n账号:{}\n密码:{}".format( os.getenv("host"), os.getenv("companyAccount"), os.getenv("account"), os.getenv("password"))) url = self.local_face_cfg.get_data(1)[0] user_data = json.loads(self.local_face_cfg.get_data(1)[1]) user_data["companyAccount"] = os.getenv("companyAccount") user_data["account"] = os.getenv("account") user_data["password"] = os.getenv("password") return os.getenv("host") + url, user_data
def test_history_data(self,table_id,start_time,meter_reading,meterCode): logger.info("$历史记录--{}$".format(table_id)) report_time_list =[] no_report_item=[] url,data = config_data.get_history_data_info(meterCode) results = request_data.get_history_data(url,data) for i in results: timeArray = time.localtime(int(i["readingTime"]*0.001)) otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) report_time_list.append(otherStyleTime) start_time = start_time.split(":")[0] for item in mock_data.mock_history_time(int(start_time)): if item not in report_time_list: no_report_item.append(item) self.no_time_report[table_id] = no_report_item if len(self.no_time_report[table_id])>0: pytest.fail(f"表具{table_id}:历史记录整点未抄表时间点:\n{self.no_time_report[table_id]}")
def test_reading_report(self, table_id, start_time, meter_reading, meterCode): logger.info("$用量检查--{}$".format(table_id)) url, data = config_data.get_consump_tion_statistic(meterCode) results = request_data.get_gas_consumption(url, data)['data'][1]['value'] print(request_data.get_gas_consumption(url, data)['data']) customerCode = request_data.get_user_info( config_data.get_user_info_ags(meterCode)).get( 'data')['customerCode'] if not customerCode: pytest.skip("没有绑定用户跳过此表具") ct_url, ct_data = config_data.get_consumption_month(customerCode) ct_results = request_data.get_user_customer_month( ct_url, ct_data)['data'][-1]['consumptionGas'] if results != ct_results: pytest.fail("表具{}累计用气与报表累计用气不一致 \n\t用量统计:{}, 月累计用气:{}".format( table_id, results, ct_results))
def setup_class(cls): logger.info("$用量检查$")
def setup_class(cls): logger.info("$读数上报检查$")
def setup_class(cls): logger.info("$表具状态校验$")
def setup_class(cls): logger.info("$登录模块$") cls.info_items = [] cls.data = []
def test_login(self, config): logger.info("$登录$") url, data = config_data.get_user_info(config) request_data.login(url, data)
def get_table_id(self, url, data): data = base_request.send_request( "get", url, data=data, header=self.handle_info["Handler"]).json() logger.info(f'表具ID:{data}') return data.get('data')
def get_all_pyment(self, url): data = base_request.send_request( "post", url, header=self.handle_info["Handler"]).json() logger.info(f'总充值:{data}') return data.get('data')
def setup_class(cls): logger.info("$上报成功率模块$") cls.no_time_report ={}
def setup_class(cls): logger.info("$金额校验$")
def get_config_info(self, url): data = base_request.send_request( "get", url, data=None, header=self.handle_info["Handler"]).json() logger.info(f'计费信息:{data}') return data