如何根据不同条件将数据写入多张单工作簿?
How to write data into multiple sheets of single workbook based on different conditions?
我试图将测试用例分为 4 类:
- 手动-烟雾
- 手动回归
- 自动烟雾
- 自动回归
我有一个 python 代码,它将以这种方式给我字典:
"ABC": {
"id1": "name1",
"id2": "name2",
"id3": "name3"
}
我使用 xlsxwriter
编写了以下代码,但这会遍历所有 sheet,但它只保存到最后。在我的 excel WB 中,我只得到最后一个 sheet.
def createExcelSheetTC(self,testcase):
workbook=xlsxwriter.Workbook('data.xlsx')
self.format_excelWB(workbook)
with xlsxwriter.Workbook('data.xlsx') as workbook:
self.format_excelWB(workbook) ##Initialize formatting of WB
if testcase == self.manualSmoke:
ws_manualSmoke=workbook.add_worksheet('Manual-Smoke Cases')
self.writeTCExcel(testcase,ws_manualSmoke)
elif testcase == self.manualRegression:
ws_manualRegression=workbook.add_worksheet('Manual-Regression Cases')
self.writeTCExcel(testcase,ws_manualRegression)
elif testcase == self.automatedSmoke:
ws_autoSmoke=workbook.add_worksheet('Automated-Smoke Cases')
self.writeTCExcel(testcase,ws_autoSmoke)
elif testcase == self.automatedRegression:
ws_autoRegression=workbook.add_worksheet('Automated-Regression Cases')
self.writeTCExcel(testcase,ws_autoRegression)
workbook.close()
def writeTCExcel(self,tc,worksheet):
##Logic to write testcase in EXCEL
## This is correct as per requirements
self.manualSmoke=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.manualSmoke)
self.manualRegression=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.manualRegression)
self.automatedSmoke=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.automatedSmoke)
self.automatedRegression=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.automatedRegression)
使用上面的代码,我得到了 'Automated-Regression' 个案例,但没有其他 3 个案例。看起来它最后只保存并覆盖所有其他写入。
您在每次调用 def createExcelSheetTC
时都会覆盖您的 xlsx
,因此您只能看到最后一个。
将它们移到 def createExcelSheetTC
之外并 仅 调用一次。
workbook=xlsxwriter.Workbook('data.xlsx')
self.format_excelWB(workbook)
...
workbook.close()
已通过以下方法解决
import xlsxwriter
d1 = {
"ABC": {
"key1": "val1",
"key2": "val2",
"key3": "val3"
},
"XYZ": {
"key4": "val4",
"key5": "val5",
"key6": "val6"
}
}
d2= { "MNO": {
"key7": "val7",
"key8": "val8",
"key9": "val9"
}
}
def create_xls_writer(tc):
workbook=xlsxwriter.Workbook('xlsxwriter.xlsx')
print tc
ws1=workbook.add_worksheet('abc')
ws2=workbook.add_worksheet('xyz')
worksheet = [ws1,ws2]
for each_tc in tc:
if each_tc==d1:
writeTCEXcel(each_tc,ws1)
elif each_tc==d2:
writeTCEXcel(each_tc,ws2)
workbook.close()
def writeTCEXcel(something,worksheet):
##Logic to write **Something** in EXCEL
create_xls_writer([d1,d2])
我试图将测试用例分为 4 类:
- 手动-烟雾
- 手动回归
- 自动烟雾
- 自动回归
我有一个 python 代码,它将以这种方式给我字典:
"ABC": {
"id1": "name1",
"id2": "name2",
"id3": "name3"
}
我使用 xlsxwriter
编写了以下代码,但这会遍历所有 sheet,但它只保存到最后。在我的 excel WB 中,我只得到最后一个 sheet.
def createExcelSheetTC(self,testcase):
workbook=xlsxwriter.Workbook('data.xlsx')
self.format_excelWB(workbook)
with xlsxwriter.Workbook('data.xlsx') as workbook:
self.format_excelWB(workbook) ##Initialize formatting of WB
if testcase == self.manualSmoke:
ws_manualSmoke=workbook.add_worksheet('Manual-Smoke Cases')
self.writeTCExcel(testcase,ws_manualSmoke)
elif testcase == self.manualRegression:
ws_manualRegression=workbook.add_worksheet('Manual-Regression Cases')
self.writeTCExcel(testcase,ws_manualRegression)
elif testcase == self.automatedSmoke:
ws_autoSmoke=workbook.add_worksheet('Automated-Smoke Cases')
self.writeTCExcel(testcase,ws_autoSmoke)
elif testcase == self.automatedRegression:
ws_autoRegression=workbook.add_worksheet('Automated-Regression Cases')
self.writeTCExcel(testcase,ws_autoRegression)
workbook.close()
def writeTCExcel(self,tc,worksheet):
##Logic to write testcase in EXCEL
## This is correct as per requirements
self.manualSmoke=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.manualSmoke)
self.manualRegression=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.manualRegression)
self.automatedSmoke=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.automatedSmoke)
self.automatedRegression=self.get_test_cases(args*)
self.createExcelSheetTC(testcase=self.automatedRegression)
使用上面的代码,我得到了 'Automated-Regression' 个案例,但没有其他 3 个案例。看起来它最后只保存并覆盖所有其他写入。
您在每次调用 def createExcelSheetTC
时都会覆盖您的 xlsx
,因此您只能看到最后一个。
将它们移到 def createExcelSheetTC
之外并 仅 调用一次。
workbook=xlsxwriter.Workbook('data.xlsx')
self.format_excelWB(workbook)
...
workbook.close()
已通过以下方法解决
import xlsxwriter
d1 = {
"ABC": {
"key1": "val1",
"key2": "val2",
"key3": "val3"
},
"XYZ": {
"key4": "val4",
"key5": "val5",
"key6": "val6"
}
}
d2= { "MNO": {
"key7": "val7",
"key8": "val8",
"key9": "val9"
}
}
def create_xls_writer(tc):
workbook=xlsxwriter.Workbook('xlsxwriter.xlsx')
print tc
ws1=workbook.add_worksheet('abc')
ws2=workbook.add_worksheet('xyz')
worksheet = [ws1,ws2]
for each_tc in tc:
if each_tc==d1:
writeTCEXcel(each_tc,ws1)
elif each_tc==d2:
writeTCEXcel(each_tc,ws2)
workbook.close()
def writeTCEXcel(something,worksheet):
##Logic to write **Something** in EXCEL
create_xls_writer([d1,d2])