我正在努力达到这个结果
| method | | passed | | datetime
| method | | passed | | datetime
| method | | passed | | datetime
| method | | passed | | datetime
要实现这一目标,我目前有一个课程XLWriter
class XLWriter:
def __init__(self, file):
self.workbook = load_workbook(file)
self.worksheet = self.workbook['Sheet1']
self.file = file
def write(self, row):
index = 0
try:
# func name, test passed, date
values = [[inspect.stack()[0][3]], True, datetime.date]
columns = [4, 6, 8]
# 3 writes to perform
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
except:
# function name, declare test failed, date
values = [[inspect.stack()[0][3]], False, datetime.date]
columns = [4, 6, 8]
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
def save(self):
self.workbook.save(self.file)
从test.py
调用此类时,如下所示
from xlwriter import XLWriter
xl = XLWriter('File.xlsx')
r = self.driver.current_url
self.assertEqual(r, url)
# write to row 14
xl.write(14)
xl.save()
我遇到了以下ValueError
ValueError: Cannot convert ['write'] to Excel
我确定这是一个小而愚蠢的东西,任何帮助都将不胜感激。
修改
完整错误堆栈
Error
Traceback (most recent call last):
File "D:\...\xlwriter.py", line 21, in write
cell.value = values[index]
File "D:\...\env\lib\site-packages\openpyxl\cell\cell.py", line 294, in value
self._bind_value(value)
File "D:\...\env\lib\site-packages\openpyxl\cell\cell.py", line 207, in _bind_value
raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert ['write'] to Excel
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\...\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "C:\Users\...\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 615, in run
testMethod()
File "D:\...\test.py", line 40, in test
xl.write(14)
File "D:\...\xlwriter.py", line 29, in write
cell.value = values[index]
File "D:\...\env\lib\site-packages\openpyxl\cell\cell.py", line 294, in value
self._bind_value(value)
File "D:\...\env\lib\site-packages\openpyxl\cell\cell.py", line 207, in _bind_value
raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert ['write'] to Excel
答案 0 :(得分:1)
尝试将列表写入单元格时代码失败。
请更新您的代码,使列表“值”的第一个元素为inspect.stack()[0] [3],而不是[inspect.stack()[0] [3]]。
更新的代码:
class XLWriter:
def __init__(self, file):
self.workbook = load_workbook(file)
self.worksheet = self.workbook['Sheet1']
self.file = file
def write(self, row):
index = 0
try:
# func name, test passed, date
values = [inspect.stack()[0][3], True, datetime.date]
columns = [4, 6, 8]
# 3 writes to perform
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
except:
# function name, declare test failed, date
values = [inspect.stack()[0][3], False, datetime.date]
columns = [4, 6, 8]
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
def save(self):
self.workbook.save(self.file)