#coding=utf-8#---------------------------------
'''# Author : chu ge
# Function:
#'''
#---------------------------------
'''# ------------------------------------------
# 导入模块
# 1.系统库
# 2.第三方库
# 3.相关定义库
# ------------------------------------------'''
#1.系统库
importsysimportosimportre#2.第三方库#读取 Excel 模块
importxlrdimportxlwtimportlogging'''# ------------------------------------------
# 导入:同级不同文件夹
# 先文件夹__init__注释,其次引用name.py
# 最后 使用具体 类class 或者 函数function 名称
# ------------------------------------------'''
importTest_Log'''# ------------------------------------------
# 导入:同级同文件夹
# 先引用name.py
# 后 使用具体 类class 或者 函数function 名称
# ------------------------------------------'''
importTesting_Read_Path#'''# ============================================================================
# Class : 类
# Explain : 输入参数
# : 输出参数
# ============================================================================'''
classClass_Module_Read(object):def __init__(self):print()def Methods_Excel_Data(self, file_path, colnameindex=0, by_name=u'Sheet1'): #修改自己路径
#print('Function_Excel_Table_Byname')
#---------------------------------------------------------------------------------------
self.File = file_path #路径名称变换
#路径
#print("路径",self.File)
#---------------------------------------------------------------------------------------
local_list_line =[]#Methods_Excel_Data
try:#--------------------------------------------------------------------------------------
local_var_temp_data = xlrd.open_workbook(self.File) #打开电子文档 目的:响应删除函数
## 这里可以拓展,使用一个Excel 利用不同表格,可以减少外部表格的数量,与上述打开表格方式 是不同的
local_var_temp_table = local_var_temp_data.sheet_by_name(by_name) #获得表格 Excel中不同表格
## Contains the data for one worksheet
local_var_total_rows = local_var_temp_table.nrows #属性 拿到总共行数
#print('total_rows: < %d >' % local_var_total_rows) # display
## Returns a slice of the values of the cells in the given line
local_var_column_names =local_var_temp_table.row_values(colnameindex, 0,6) #某一列数据 ['', '', '', ''] 默认从0行开始
#print('line num: < %s > names: < % s >'% (len(local_var_column_names),local_var_column_names))
for temp_num in range(1, local_var_total_rows): #也就是从Excel第二行开始,第一行表头不算
local_var_row = local_var_temp_table.row_values(temp_num) #返回单元格中切片
#print('rows_num: < %s > line_num: < %s > each_element' % (temp_num ,len(local_var_row)),local_var_row ) # 每row 就是列表
#每行分片成列表, 列表转变成字典, 字典转变成列表
local_dictionary_app = dict(zip(local_var_column_names, local_var_row)) #列表变字典
#print('local_dictionary_app: ',local_dictionary_app)
local_list_line.append(local_dictionary_app) #字典转变成列表
## 内部的字典变成了元素
#print('local_list_line: ',local_list_line) #打印列表元素
returnlocal_list_lineexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Excel_Data", os.getcwd()))defMethods_Excel_Data_Display(self, file_path):
local_list_line=self.Methods_Excel_Data(file_path)#遍历列表中的元素 显示成表格模式
for line inlocal_list_line:print('行号编码:< %s > %s' %(local_list_line.index(line), line))#pprint.pprint(line) # 规则打印数据
#返回列表 并且列表的元素是字典
#'''# ============================================================================
# Class : 类
# Explain : 输入参数 表格数据
# : 输出参数 分表格
# ============================================================================'''
classClass_Module_Tlabe(object):def __init__(self):
File_Path= Testing_Read_Path.Class_File_Read() #路径对象 path
self.local_var_path_standard =File_Path.Methods_File_Operation_Standard()
self.local_var_path_actual=File_Path.Methods_File_Operation_Actual()
self.Log_Display=Test_Log.Test_Save_log.Class_Log_Display()
self.Log_Display.Methods_BasicConfig()defMethods_Table_Standard(self):#Methods_Table_Standard
try:
File_Read= Class_Module_Read() #Excel data 对象
Table_Standard =File_Read.Methods_Excel_Data(self.local_var_path_standard)returnTable_StandardexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Table_Standard", os.getcwd()))defMethods_Table_Actual(self):#Methods_Table_Actual
try:
File_Read= Class_Module_Read() #Excel data 对象
Table_Actual =File_Read.Methods_Excel_Data(self.local_var_path_actual)returnTable_ActualexceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Methods_Table_Actual", os.getcwd()))# #搜索actual 中循环搜索的词条,逐个与全部的标准库进行对比
defMethods_Search_Actual_To_Standard(self):
Table_Actual=self.Methods_Table_Actual()
local_error_line_list=[]
Feature=self.Methods_Feature_Select()#Actual_To_Standard
try:
local_var_order_count= 0 #初始化计数
print("Total Actual Line : < %d >" %len(Table_Actual))for Var_A_Element inTable_Actual:
local_var_order_count+= 1
#这里是对比的源头
#添加规则正则表达,首字母
try:
Is_Capital=self.Methods_Capital_Word(Var_A_Element[1])if Is_Capital ==True:
A1= self.Methods_Search_Standard(1, Var_A_Element[1]) #第1列 备注 第0列开始
else:
A1=NoneexceptException:print("123")
A2= self.Methods_Search_Standard(2, Var_A_Element[2]) #第2列
#功能选择处
if Feature == "1":
A3= "1"
else:
A3= self.Methods_Search_Standard(3, Var_A_Element[3]) #第3列
print('*' * 20)print('line Number : <%d>' % (local_var_order_count + 1))
logging.info('\nline Number : [%d]\n%s' % ((local_var_order_count + 1),"one sql end"))if ((A1 == "1") and (A2 == "1") and(A3 == "1")) !=0:print('本词条测试结束')print("--" * 20)else:print('词条有错误!!! 请查找原因 !!!')print("--" * 20)
local_error_line_list.append(local_var_order_count)#test message total
print("Test Message Total")for var_line inlocal_error_line_list:print("Error line: %s" % (var_line + 1)) #对应Excel
logging.info("Error line: %s" % (var_line + 1))print("Total Num : <%s>" %len(local_error_line_list))
logging.info("Total Num : <%s>" %len(local_error_line_list))exceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Actual_To_Standard", os.getcwd()))defMethods_Search_Standard(self, line, entry):
Table_Standard=self.Methods_Table_Standard()
self.loacl_var_line=line
self.local_var_entry=entry
Local_var_count= 1
#Search_Actual_To_Standard
try:#单个思路:获取到对值进行匹配,此值作为对比的标点,标准库作为标靶
#搜索匹配功能,遍历每行,对应元素进行匹配,这是关键
#最后返回提示量
for Var_A_Element inTable_Standard:#有词条且词条不为空
if (self.local_var_entry == Var_A_Element[self.loacl_var_line]) !=0:
Local_Test_Flag= "1"
returnLocal_Test_Flagelse:
Local_Test_Flag= "0"Local_var_count+= 1
#调试时,打开打印
print("Error name:<%s>" %self.local_var_entry)
logging.info("\nError column: <%d>\n词条名称 : <%s>" %(self.loacl_var_line,self.local_var_entry) )exceptException:print("捕获异常:\n位置:<%s>\n目录:<%s>" % ("Search_Actual_To_Standard", os.getcwd()))#功能选择函数
defMethods_Feature_Select(self):#1.feature 1和2列对比(默认)
#2.feature 1、2和3列对比
print("Feature Select:\n[%s]\n[%s]"%("1.feature 1和2列对比(默认)","2.feature 1、2和3列对比"))#Feature_Name = input(">>: ")
Feature_Name = "1" #调试固定
if Feature_Name >"3":
Feature_Name= "1"
returnFeature_Name#首字母大写特地检查
defMethods_Capital_Word(self,column1):
result_value= re.match(r"[A-Z]",column1)ifresult_value:
result=True#result = result2.istitle()
else:
result=False#print("首字母大写特地检查:",result)
returnresult#'''# ============================================================================
# Function: Function_Excel_Data 函数
# Explain : 输入参数 对象 列表的字典
# : 输出参数 被调用
# ============================================================================'''
defFunction_Excel_Data():#Function_Excel_Data
try:
File_Path= Testing_Read_Path.Class_File_Read() #路径对象 path
local_var_path_standard =File_Path.Methods_File_Operation_Standard()
local_var_path_actual=File_Path.Methods_File_Operation_Actual()# File_Read = Class_Module_Read() #Excel data 对象
#Table_Standard = File_Read.Methods_Excel_Data(local_var_path_standard)
#Table_Actual = File_Read.Methods_Excel_Data(local_var_path_actual)
File_Read.Methods_Excel_Data_Display(local_var_path_standard)
File_Read.Methods_Excel_Data_Display(local_var_path_actual)exceptException:print("捕获异常:\n目录:<%s>\n位置:<%s>" % ("Function_Excel_Data", os.getcwd()))#
#============================================================================
'''# ============================================================================
# 测试专用
# ============================================================================'''
if __name__ == "__main__":print('测试开始')#============================
Table_data =Class_Module_Tlabe()
Table_data.Methods_Search_Actual_To_Standard()print('测试完成')