如何生成HTMLTestRunner测试报告。接上篇文章,对于unittest框架,运行后,测试结果不便于查看,同时多个case存在的时候,可能会导致case result记录不正确的情况。
为此,引入了HTMLTestRunner.py,它是Python标准库unittest模块的一个扩展。它可以生成直观的HTML测试报告。
一、下载HTMLTestRuner
首先,下载HTMLTestRuner.py文件。
下载地址:Python2.7版本:http://tungwaiyip.info/software/HTMLTestRunner.html,
Python3.0版本:https://github.com/huilansame/HTMLTestRunner_PY3。
二、生成HTMLTestRuner报告
三、测试报告详情
四、参考代码
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : chen # @File : run_main.py # @Software: PyCharm import os import unittest import time import HTMLTestRunner import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart cur_path = os.path.dirname(os.path.realpath(__file__)) def add_case(caseName=\'case\',rule=\'test*.py\'): case_path = os.path.join(cur_path, caseName) if not os.path.exists(case_path): os.mkdir(case_path) print(\'test case path:%s\' %case_path) discover = unittest.defaultTestLoader.discover(case_path, pattern=rule, top_level_dir=None) print(discover) return discover def run_case(all_case,reportName=\'report\'): now = time.strftime(\'%Y_%m_%d_%H_%M_%S\') report_path = os.path.join(cur_path, reportName) if not os.path.exists(report_path): os.mkdir(report_path) report_abspath = os.path.join(report_path, now + \'result.html\') print(\'test case path:%s\' %report_abspath) fp = open(report_abspath, \'wb\') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=\'自动化测试报告:\', description=\'用例执行情况\') runner.run(all_case) fp.close() def get_report_file(report_path): lists = os.listdir(report_path) lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn))) print(\'最新测试生成报告:\' + lists[-1]) report_file = os.path.join(report_path, lists[-1]) return report_file def send_mail(sender,password,receiver,smptserver,report_file,port): with open(report_file, \'rb\') as f: mail_body = f.read() msg = MIMEMultipart() body = MIMEText(mail_body,_subtype=\'html\',_charset=\'utf-8\') msg["subject"] = "自动化测试报告" msg["from"] = sender msg["to"] = receiver msg.attach(body) att = MIMEText(open(report_file,\'rb\').read(), \'base64\', \'utf-8\') att[\'Content-Type\'] = \'application/octet-stream\' att[\'Content-Disposition\'] = \'attachment; filename="report.html"\' msg.attach(att) try: smtp = smtplib.SMTP_SSL(smptserver,port) except: smtp = smtplib.SMTP() smtp.connect(smptserver,port) smtp.login(sender,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit() print(\'test report email has send out !\') if __name__ == "__main__": all_case = add_case() run_case(all_case) report_path = os.path.join(cur_path,\'report\') report_file = get_report_file(report_path) from jiekou_test.config import readConfig sender = readConfig.sender password = readConfig.password smtp_server = readConfig.smtp_server port = readConfig.port receiver = readConfig.receiver send_mail(sender,password,receiver,smtp_server,report_file,port)
写在最后的话:这些都是小编自己一个字一个字敲上去的,原创算不上,可能很多类似的资料,小编写这个的目的是为了激励自己在学习道路上养成良好的习惯,所以转载请注明出处,谢谢!