美化报告样式和发送结果邮件
上面我们写了 两个测试用例作为示例,我们也可以添加更多的进去。接着我们使用HTMLTestRunner这个开源模块来美化测试报告,关于它的下载使用可以参考https://pypi.python.org/pypi/HTMLTestRunner。然后,我们可以在代码中写上运行完成之后自动发送测试邮件出来,便于我们查看。请参看以下代码:
#coding=utf-8
import unittest
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time
import HTMLTestRunner
from email.mime.application import MIMEApplication
#---发送邮件---
def send_email(report_file):
sender = "XXXXXX@qq.com"
receiver = "XXXXXX@qq.com"
smtpserver = "smtp.qq.com"
#发送邮箱的账号密码,此处使用的是qq邮箱和第三方登录的授权码
username = "XXXXXX@qq.com"
password = "gfomcomojtuudijc"
#定义邮件正文
file = open(report_file,"rb")
mail_body = file.read()
file.close()
msg = MIMEText(mail_body, _subtype="html", _charset="utf-8")
msg["Subject"] = u"自动化测试报告"
smtp = smtplib.SMTP_SSL("smtp.qq.com")
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
print("Email has send out !")
#---将用例添加到测试套件---
def creatsuite():
testunit=unittest.TestSuite()
test_dir = "D:\\Test_Project\\test_case"
discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py",
top_level_dir = None)
for test_suite in discover:
for test_case in test_suite:
testunit.addTest(test_case)
print (testunit)
return testunit
if __name__ == "__main__":
current_time = time.strftime("%Y-%m-%d-%H-%M")
report_dir = "D:\\Test_Project\\test_report\\"
report_file = report_dir + current_time + "-Test_Result.html"
report_stream = open(report_file, "wb")
# runner = unittest.TextTestRunner()
# 注意HTMLTestRunner只支持python2
runner = HTMLTestRunner.HTMLTestRunner(stream=report_stream,title=u"自动化测试报告", description=u"用例执行情况如下:")
runner.run(creatsuite())
report_stream.close()
send_email(report_file)
在上面的代码中我们使用了runner = HTMLTestRunner.HTMLTestRunner()
方法来代替runner = unittest.TextTestRunner()
,是为了使用HTMLTestRunner这个模块来美化和输出美观的报告。然后调用方法来发送邮件。运行此文件后,可以得到以下输出的报告:
可以看见使用这个可以清晰的看到用例的执行情况,也便于查看失败用例的原因去调试它。
同时,在我们输入的收件箱里也会受到一份通知邮件,我们可以将此输出报告添加到邮件的正文或附件中,以便于查看。
网友评论