- 论坛徽章:
- 0
|
本帖最后由 dahe_1984 于 2017-12-25 16:46 编辑
HTMLTestRunner生成的测试报告直观,简洁。缺点是只用用于unittest模块,简单改写了下,生成需要的测试报告。
def generateResults():
#
# 定义三种类型的统计变量 和 log文件
#
global success_count, failure_count, warn_count
f=open(global_list.log_name)
lines = f.readlines()
#
# 分析log
#
rmap = {}
classes = []
cls = "Smoke_TEST"
flag = step = 0
found = -1
o = ""
startTime = lines[0].split(",")[0]
#
# 过滤掉紧邻的目录行,比如:2017-12-16 16:54:21,029 - INFO - check_menu
# 2017-12-16 16:54:21,161 - INFO - check_menu
# 2017-12-16 16:54:26,453 - INFO -
# 2017-12-16 16:54:26,454 - INFO - 2017-12-06 17:39:00 - 2017-12-06 17:40:00
# 2017-12-16 16:54:40,224 - WARNING -
# 2017-12-16 16:54:40,224 - WARNING -
# 2017-12-16 16:55:13,880 - ERROR - check_Result:
#
for eachline in lines:
step = step + 1
if("check_menu" in eachline):
if((step - flag) != 1):
flag = flag + 1
t = eachline.split(" ")[8:]
t = " ".join(t)
t = t.strip()
step = flag
stopTime = eachline.split(",")[0]
if("check_Result" in eachline and "ERROR" in eachline):
flag = flag + 3
e = eachline.split(" ")[-1].strip()
n = 2
result.append((2, 'error', complete_output, ''))
failure_count = failure_count +1
if("(s)" in eachline):
flag = flag + 3
e = eachline.split(" ")[7:]
e = " ".join(e)
e = e.strip()
n = 0
result.append((0, 'sucess', complete_output, ''))
success_count = success_count + 1
if("Query" in eachline and "WARNING" in eachline):
flag = flag + 3
e = eachline.split(" ")[7:]
e = " ".join(e)
e = e.strip()
n = 1
result.append((1, 'WARNING', complete_output, ''))
warn_count = warn_count + 1
if("Message" in eachline and "ERROR" in eachline):
flag = flag + 3
e = eachline.split(" ")[7:]
e = " ".join(e)
e = e.strip()
n = 2
result.append((2, 'failed', complete_output, ''))
failure_count = failure_count +1
if((flag%2 == 0) and (flag > 0) and (found != flag)):
found = flag
if not rmap.has_key(cls):
rmap[cls] = []
classes.append(cls)
rmap[cls].append((n,t,o,e))
r = [(cls, rmap[cls]) for cls in classes]
duration = time.mktime(time.strptime(stopTime, "%Y-%m-%d %H:%M:%S")) - time.mktime(time.strptime(startTime, "%Y-%m-%d %H:%M:%S"))
duration = str(int(duration/60)) + " min"
generate_report(r)
report_attrs = getReportAttributes(result, startTime, duration)
generator = 'HTMLTestRunner_test'
stylesheet = generate_stylesheet()
heading = generate_heading(report_attrs)
report = generate_report(r)
ending = generate_ending()
output = HTML_TMPL % dict(
title = saxutils.escape(title),
generator = generator,
stylesheet = stylesheet,
heading = heading,
report = report,
ending = ending,
)
#
# 设置报告文件保存路径
# 获取系统当前时间
# 设置报告名称格式
#
report_path = os.path.dirname(os.path.abspath('.')) + '\\testSuite\\test_report\\'
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
HtmlFile = report_path + now + "HTMLtemplate.html"
tmp_str = """生成Report: """
logger.info("%s%s"%(tmp_str.encode('gbk'), HtmlFile))
fp = file(HtmlFile, "wb")
stream = fp
stream.write(output.encode('utf-8'))
fp.close()
|
|