300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 编写了html怎么测试 如何将测试结果写入HTMLTestRunner生成的报告标题中

编写了html怎么测试 如何将测试结果写入HTMLTestRunner生成的报告标题中

时间:2021-07-23 13:47:23

相关推荐

编写了html怎么测试 如何将测试结果写入HTMLTestRunner生成的报告标题中

HTMLTestRunner生成测试报告时,报告的标题在运行前就已经写死在代码了,假如我现在需要在执行完毕后,根据执行结果,把执行的状态写在标题里面,类似的效果如图:

标题

如果有一条执行错误的,就在后面加ERROR,如果有一条执行失败的,就在后面加FAIL,如果都通过,就在后面加PASS

要达到这个效果,我们就要研究,HTMLTestRunner里面是怎么生成报告的标题的

在HTMLTestRunner类的run()方法里面,有一句self.generateReport(test, result)

def run(self, test):

"Run the given test case or test suite."

result = _TestResult(self.verbosity)

test(result)

self.stopTime = datetime.datetime.now()

self.generateReport(test, result)

print('\nTime Elapsed: %s' % (self.stopTime-self.startTime), file=sys.stderr)

return result

很显然,generateReport是生成测试报告的方法,继续研究这个方法

def generateReport(self, test, result):

report_attrs = self.getReportAttributes(result)

generator = 'HTMLTestRunner %s' % __version__

stylesheet = self._generate_stylesheet()

heading = self._generate_heading(report_attrs)

report = self._generate_report(result)

ending = self._generate_ending()

output = self.HTML_TMPL % dict(

title = saxutils.escape(self.title),

generator = generator,

stylesheet = stylesheet,

heading = heading,

report = report,

ending = ending,

)

self.stream.write(output.encode('utf8'))

我们分别研究这里面的几个self的方法,发现self._generate_heading很可疑

def _generate_heading(self, report_attrs):

a_lines = []

for name, value in report_attrs:

line = self.HEADING_ATTRIBUTE_TMPL % dict(

name = saxutils.escape(name),

value = saxutils.escape(value),

)

a_lines.append(line)

heading = self.HEADING_TMPL % dict(

title = saxutils.escape(self.title),

parameters = ''.join(a_lines),

description = saxutils.escape(self.description),

)

return heading

看源码,这确实是处理报告头部信息的方法,包括标题,描述,测试结果等等,那么就可以改造了。现在我们需要根据测试结果,来重新定义标题,而该方法中没有测试结果相关的内容,所以我们把测试结果当成参数传进来,而在这里面,测试结果都是result,所以这里可以改造为:

def _generate_heading(self, report_attrs, result):

a_lines = []

for name, value in report_attrs:

line = self.HEADING_ATTRIBUTE_TMPL % dict(

name=saxutils.escape(name),

value=saxutils.escape(value),

)

a_lines.append(line)

# 在标题中显示当前测试任务的结果

if result.error_count > 0:

self.title = self.title + ' --[ERROR]'

elif result.failure_count > 0:

self.title = self.title + ' --[FAIL]'

else:

self.title = self.title + ' --[PASS]'

heading = self.HEADING_TMPL % dict(

title=saxutils.escape(self.title),

parameters=''.join(a_lines),

description=saxutils.escape(self.description)

)

return heading

那么相应的generateReport方法中

heading = self._generate_heading(report_attrs)

需要修改为

heading = self._generate_heading(report_attrs, result)

再次执行测试任务,就可以根据测试任务的结果显示标题了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。