美文网首页
unittest中报告示例

unittest中报告示例

作者: U一like | 来源:发表于2018-06-06 16:10 被阅读32次

    美化报告样式和发送结果邮件
    上面我们写了 两个测试用例作为示例,我们也可以添加更多的进去。接着我们使用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这个模块来美化和输出美观的报告。然后调用方法来发送邮件。运行此文件后,可以得到以下输出的报告:

    HTMLTestRunner

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

    相关文章

      网友评论

          本文标题:unittest中报告示例

          本文链接:https://www.haomeiwen.com/subject/egnbsftx.html