unittest中报告示例

美化报告样式和发送结果邮件
上面我们写了 两个测试用例作为示例,我们也可以添加更多的进去。接着我们使用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 = "[email protected]"
    receiver = "[email protected]"
    smtpserver = "smtp.qq.com"
    #发送邮箱的账号密码,此处使用的是qq邮箱和第三方登录的授权码
    username = "[email protected]"
    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这个模块来美化和输出美观的报告。然后调用方法来发送邮件。运行此文件后,可以得到以下输出的报告:

HTMLTestRunner

可以看见使用这个可以清晰的看到用例的执行情况,也便于查看失败用例的原因去调试它。
同时,在我们输入的收件箱里也会受到一份通知邮件,我们可以将此输出报告添加到邮件的正文或附件中,以便于查看。

你可能感兴趣的:(unittest中报告示例)