当前位置: 首页 > news >正文

男的怎么做直播网站如何添加网站 ico

男的怎么做直播网站,如何添加网站 ico,北京市中关村有哪家可以做网站维护,渝叶购零售客户电商网站测试业务需要#xff1a; 现有A系统作为下游数据系统#xff0c;上游系统有A1,A2,A3... 需要将A1,A2,A3...的数据达到某条件后#xff08;比如#xff1a;A1系统销售单提交出库成功#xff09;自动触发MQ然后再经过数据清洗落到A系统#xff0c;并将清洗后数据通过特定…测试业务需要 现有A系统作为下游数据系统上游系统有A1,A2,A3... 需要将A1,A2,A3...的数据达到某条件后比如A1系统销售单提交出库成功自动触发MQ然后再经过数据清洗落到A系统并将清洗后数据通过特定规则汇总在A系统报表中 现在需要QA同学验证的功能是 A系统存储数据清洗后的库表(为切片表)有几十个且前置系统较多测试工作量也较多 需要核对清洗后A存库数据是否准确 清洗规则1直接取数 2拼接取数 3映射取数 直接取数字段在2系统表中字段命名规则一致 so,以下测试工具是针对直接取数规则来开发以便于测试 代码实现步骤 1将表字段来源系统表和切片表 数据库链接信息查询字段 作为变量 将这些信息填入input.xlsx 作为入参 2读取表字段根据来源系统表 数据库链接信息查询字段 查询来源库表将查询出字段值存储outfbi.xlsx (3)读取表字段根据切片表 数据库链接信息查询字段 查询切片库表将查询出字段值存储outods.xlsx 4对比outfbi.xlsxoutods.xlsx的字段值 对比后生成result.xlsx文件新增列校验结果 核对字段值一致校验结果为Success,否则为Fail 代码如下 入参文件见附件 DbcheckApi.py import os import pymysql import pandas as pd from openpyxl import load_workbook from openpyxl.styles import PatternFill import datetime import ast测试数据路径管理 SCRIPTS_DIR os.path.dirname(os.path.dirname(os.path.abspath(__file__))) GENERATECASE_DIR os.path.join(SCRIPTS_DIR, dbcheck) inputDATAS_DIR os.path.join(GENERATECASE_DIR, inputdata) outDATAS_DIR os.path.join(GENERATECASE_DIR, outdata)class DbcheckApi():def __init__(self,data):self.inputexceldataworkbook load_workbook(filenameself.inputexcel)sheet workbook[数据源]# 读取来源表-连接信息sourcedb_connection_info ast.literal_eval(sheet[B3].value)odsdb_connection_info ast.literal_eval(sheet[B4].value)source_db sheet[C3].value.strip()ods_db sheet[C4].value.strip()source_queryby sheet[D3].value.strip()ods_queryby sheet[D4].value.strip()print(sourcedb_connection_info)print(odsdb_connection_info)print(source_db)print(ods_db)print(source_queryby)print(ods_queryby)self.sourcedb sourcedb_connection_infoself.odsdb odsdb_connection_infoself.source_db source_dbself.ods_db ods_dbself.source_queryby source_querybyself.ods_queryby ods_querybydef source_select_db(self):host self.sourcedb.get(host)port self.sourcedb.get(port)user self.sourcedb.get(user)passwd self.sourcedb.get(passwd)db self.sourcedb.get(db)if not host or not port or not user or not passwd or not db:error_msg 连接信息不完整return {code: -1, msg: error_msg, data: }cnnfbi pymysql.connect(hosthost,portport,useruser,passwdpasswd,dbdb)cursor cnnfbi.cursor()try:# 读取Excel文件df pd.read_excel(self.inputexcel, sheet_nameSheet1)# 获取第1列从第2行开始读取的字段名fields df.iloc[1:, 0].tolist()print(fields)# 构建查询SQL语句sql SELECT {} FROM {} WHERE {}.format(, .join(fields), self.source_db, self.source_queryby)print(sql)# 执行查询语句cursor.execute(sql)except pymysql.err.OperationalError as e:error_msg str(e)if Unknown column in error_msg:column_name error_msg.split()[1]msg{code: -1, msg: f列字段 {column_name} 在 self.source_db 表结构中不存在请检查, data: }print(msg)return {code: -1, msg: f列字段 {column_name} 在 self.source_db 表结构中不存在请检查, data: }else:return {code: -1, msg: error_msg, data: }print(error_msg)# 获取查询结果result cursor.fetchall()# 关闭游标和连接cursor.close()cnnfbi.close()# 检查查询结果是否为空if not result:return {code: -1, msg: f查询无数据请检查sql: {sql}, data: }else:# 将结果转换为DataFrame对象df pd.DataFrame(result, columnsfields)odskeyself.source_db表-字段odsvalueself.source_db表-字段值# 创建新的DataFrame对象将字段和对应值放在两列df_new pd.DataFrame({odskey: fields, odsvalue: df.iloc[0].values})outexcel os.path.join(outDATAS_DIR, outputfbi.xlsx)# 导出结果到Excel文件df_new.to_excel(outexcel, indexFalse)def ods_select_db(self):host self.odsdb.get(host)port self.odsdb.get(port)user self.odsdb.get(user)passwd self.odsdb.get(passwd)db self.odsdb.get(db)if not host or not port or not user or not passwd or not db:raise ValueError(连接信息不完整)cnnfbi pymysql.connect(hosthost,portport,useruser,passwdpasswd,dbdb)cursor cnnfbi.cursor()try:# 读取Excel文件df pd.read_excel(self.inputexcel, sheet_nameSheet1)# 获取第1列从第2行开始读取的字段名fields df.iloc[1:, 0].tolist()print(fields)# 构建查询SQL语句sql SELECT {} FROM {} WHERE {}.format(, .join(fields), self.ods_db, self.ods_queryby)print(sql)# 执行查询语句cursor.execute(sql)except pymysql.err.OperationalError as e:error_msg str(e)if Unknown column in error_msg:column_name error_msg.split()[1]return {code: -1, msg: f列 {column_name} 不存在self.ods_db 表结构中请检查, data: }else:return {code: -1, msg: error_msg, data: }# 获取查询结果result cursor.fetchall()# 关闭游标和连接cursor.close()cnnfbi.close()# 将结果转换为DataFrame对象df pd.DataFrame(result, columnsfields)# 创建新的DataFrame对象将字段和对应值放在两列odskeyself.ods_db表-字段odsvalueself.ods_db表-字段值df_new pd.DataFrame({odskey: fields, odsvalue: df.iloc[0].values})# 导出结果到Excel文件outexcel os.path.join(outDATAS_DIR, outputfms.xlsx)df_new.to_excel(outexcel, indexFalse)def check_order(self):self.source_select_db()self.ods_select_db()outputfbi os.path.join(outDATAS_DIR, outputfbi.xlsx)outputfms os.path.join(outDATAS_DIR, outputfms.xlsx)df_a pd.read_excel(outputfbi)df_b pd.read_excel(outputfms)# 创建新的DataFrame对象用于存储C表的数据df_c pd.DataFrame()# 将A表的列写入C表for col in df_a.columns:df_c[col] df_a[col]# 将B表的列入C表for col in df_b.columns:df_c[col] df_b[col]odsvalueself.ods_db表-字段值fbivalueself.source_db表-字段值# 比对A2和B2列的值如果不一致则在第5列写入校验失败df_c[校验结果] for i in range(len(df_c)):if pd.notnull(df_c.at[i, fbivalue]) and pd.notnull(df_c.at[i, odsvalue]):fbivalue_rounded df_c.at[i, fbivalue]odsvalue_rounded df_c.at[i, odsvalue]if isinstance(fbivalue_rounded, (int, float)):fbivalue_rounded round(fbivalue_rounded, 3)elif isinstance(fbivalue_rounded, datetime.datetime):fbivalue_rounded round(fbivalue_rounded.timestamp(), 3)else:try:fbivalue_rounded round(float(fbivalue_rounded), 3)except ValueError:passif isinstance(odsvalue_rounded, (int, float)):odsvalue_rounded round(odsvalue_rounded, 3)elif isinstance(odsvalue_rounded, datetime.datetime):odsvalue_rounded round(odsvalue_rounded.timestamp(), 3)else:try:odsvalue_rounded round(float(odsvalue_rounded), 3)except ValueError:passif fbivalue_rounded ! odsvalue_rounded:df_c.at[i, 校验结果] Failelse:df_c.at[i, 校验结果] Success# 将结果写入到C.xlsx文件df_c.to_excel(checkhead_result.xlsx, indexFalse)# 打开C.xlsx文件并设置背景色book load_workbook(checkhead_result.xlsx)writer pd.ExcelWriter(checkhead_result.xlsx, engineopenpyxl)writer.book book# 获取C.xlsx的工作表sheet_name Sheet1ws writer.book[sheet_name]# 设置背景色为红色red_fill PatternFill(start_colorFFFF0000, end_colorFFFF0000, fill_typesolid)# 遍历校验结果列将不一致的单元格设置为红色背景for row in ws.iter_rows(min_row2, min_collen(df_c.columns), max_rowlen(df_c), max_collen(df_c.columns)):for cell in row:if cell.value Fail:cell.fill red_fill# 保存Excel文件writer.save()writer.close()if __name__ __main__:inputexcel os.path.join(inputDATAS_DIR, input.xlsx)DbcheckApi(inputexcel).check_order()
http://www.eeditor.cn/news/126676/

相关文章:

  • flash+xml地图网站深圳做网站的公司排名
  • 手机建站cms系统网址缩短生成链接
  • 网站主栏目手机app快速开发工具
  • 做网站接广告赚钱么网页微信手机登录
  • 怎样删除网站虚拟主机内容当当网电子商务网站建设特点
  • 网站入口设计苏州网站建设公司书生商友
  • 好用的做网站的app开启wordpress mu
  • 备案网站wordpress 动漫主题
  • 优设计网站自豪地使用wordpress
  • 三台移动网站建设搭建网站的软件有哪些
  • 找婚庆公司去什么网站域名和主机有了怎么做网站
  • 怎么建网站平台卖东西内蒙古自治区住房和城乡建设部网站
  • 重庆建工第二建设有限公司网站旅游网站名称设计
  • 蕲春住房和城乡建设局网站网站建设订流量什么意思
  • 网站域名是什么意思宣城哪里做网站
  • 如何用api方式做网站app定制开发企业
  • 购物网站上分期怎么做的怎样开网店
  • 山东胜越石化工程建设有限公司网站做网站容易挣钱吗
  • 福建西南建设有限公司网站外贸网站怎么营销
  • 网站建设费用预算表格推广方案怎么写模板
  • 使用word做网站wordpress英文版 菜单
  • 国外网站谷歌seo推广上海注册公司哪家好
  • 网站建设广告合同需要交印花税吗项目计划书范文模板
  • 计算机网络技术 网站建设方向定制彩票网站开发
  • 网站建设学的是什么知识wordpress 前台打不开
  • 女生做网站前台做电商怎么入门
  • 连云港市住房和城乡建设局网站房子设计师怎么找
  • 北京那家建网站好类型: 营销型网站建设
  • 荆轲网络做网站做网站准备内容
  • 泉州网站制作推广教人做辐射4mod的网站