我希望将测试结果记录在excel文件中。这是我的预期输出
test, True, 2018/11/27 OR test, False, 2018/11/27
当前,要实现这一点,我有一个非常繁琐的实现。这是我的Excel作家课程
xlwriter.py
class XLWriter:
def __init__(self, file):
self.workbook = load_workbook(file)
self.worksheet = self.workbook['Sheet1']
self.file = file
def write_true(self, row):
index = 0
# function name, declare test passed, date
values = [inspect.stack()[1][3], True, datetime.date)]
# column numbers of above
columns = [4, 6, 8]
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
def write_true(self, row):
index = 0
# function name, declare test passed, date
values = [inspect.stack()[1][3], False, datetime.date)]
# column numbers of above
columns = [4, 6, 8]
while index < 2:
cell = self.worksheet.cell(row=row, column=columns[index])
cell.value = values[index]
index += 1
以及来自测试的示例断言
test.py
try:
self.assertEqual(url, url)
xl.write_true(14)
xl.save()
except:
xl.write_false(14)
xl.save()
这是不可扩展的。我当时想快速解决方案是根据测试是否成功返回True
或False
bool,但是我在unittest文档中看不到该行为的函数。 / p>
答案 0 :(得分:0)
简短答案-否
长答案-否。但是,。解决问题的方法很多。
要在三个月后再次解决这个问题,我们实际上打算实现什么目标?
我们要执行以下操作
在这种情况下,无需从测试本身返回任何内容。与其返回一个布尔值,我们还可以发送一个通知xlwriter.px
并包含所需的信息。
在执行此操作之前,我们需要重写xlwriter.py
。创建此脚本以来,我已将数据库移植到SQLite。
Manager.py
import sqlite3
import datetime
import os
class Manager:
def write_results_true(self, test):
connection = sqlite3.connect(os.path.abspath('path'))
connection.execute('UPDATE Details '
'SET Passed'
'= "True"'
'WHERE Name = "' + test + '";')
connection.commit()
connection.close()
def write_results_false(self, test):
connection = sqlite3.connect(os.path.abspath('path'))
connection.execute('UPDATE Details '
'SET Passed'
'= "False"'
'WHERE Name = "' + test + '";')
connection.commit()
connection.close()
我们简化了经理类,现在,将其写入数据库很简单。
test.py
def test_sample_test(self):
"""
A sample test
"""
a = 1
if a == 1:
m.write_results_true(stack()[0].function)
self.assertEqual(a, 1)
else:
m.write_results_false(stack()[0].function)
# A comment on why the test has failed
self.fail('a does not equals 1')