前言
小编在搭建组内接口自动化框架过程中使用过两个HTML报告框架,Pytest-HTML和Allure,本文主要介绍下Pytest-HTML。
Pytest-HTML是个插件,Pytest用于生成测试结果的HTML报告,兼容Python2.7和Python3.6。
Pytest-HTML介绍
pip install pytest-html
pytest --html=report.html 执行完后会在当前目录生成一个report.html的报告文件
pytest --html=./report/html/report.html
为了更好的展示测试报告,可以把css样式合并到HTML里。
pytest --html=report.html --self-contained-html
pip install pytest-rerunfailures 用例失败再重跑一次,需要再命令行加参数--reruns reruns参数有2个用法: --reruns=RERUNS RERUNS是失败重跑的次数,默认为0 --reruns-delay=RERUNS_DELAY RERUNS_DELAY是失败后间隔多少s重新执行。
pytest --reruns 1 -html=report.html --self-contained-html
Pytest-HTML在接口框架中的使用
def SendMail(To, Title, mail_msg, From="test@sogou-inc.com", Cc=None): """ :param From: 发件人 :param To: 收件人 :param Cc: 抄送 :param Title: 邮件标题 :param mail_msg: 邮件内容(可以是html,或文本) :return: """ message = MIMEText(mail_msg, 'html', 'utf-8') message['From'] = Header(From, 'utf-8') message['To'] = Header("; ".join(To), 'utf-8') if Cc is not None: message['Cc'] = Header("; ".join(Cc), 'utf-8') message['Subject'] = Header(Title, 'utf-8') try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(From, To, message.as_string()) print("邮件发送成功") except smtplib.SMTPException: print("Error: 无法发送邮件")
# 利用pytest-html生成html报告 shell = Shell() cmd = 'pytest --reruns 1 --html=report/html/report.html --self-contained-html'
# 邮件发送 try: file_name = html_report_path + '/' + 'report.html' f = open(file_name, 'rb') message = f.read() f.close() receiver = ["chenpeng01@sogou-inc.com"] cc = [""] ExSendEmail.SendMail(To=receiver, Title="【奇点广告】接口自动化测试报告", mail_msg=message, Cc=cc) except Exception as e: log.error('发送邮件失败,请检查邮件配置') raise