• web端自动化——selenium测试报告生成、找到测试报告路径、实现发邮件(整合)


    有这样的一个场景:

    假设生成的测试报告与多人相关,每个人都去测试服务器査看就会比较麻烦,如果把这种主动的且不及时的査看变成被动且及时的査收,就方便多了。

    整个程序的执行过程可以分为三个步骤:

    ①    通过unittest框架的discover()找到匹配测试用例,由HTMLTestRunner的run()方法执行测试用例并生成最新的测试报告。

    ②    调用new_report()函数找到测试报告目录(test_case)下最新生成的测试报告,返回测试报告的路径。

    ③    将得到的最新测试报告的完整路径传给send_mail()函数,实现发邮件功能。

     实例代码如下:

    import unittest
    import time
    import os
    import smtplib
    from HTMLTestRunner import HTMLTestRunner
    from email.mime.text import MIMEText
    from email.header import Header
    from email.mime.multipart import MIMEMultipart

    #定义发送邮件
    def send_mail(file_new):
    f=open(file_new,'rb')
    mail_body=f.read()
    f.close()
    #构造附件
    att = MIMEText(mail_body, 'base64', 'utf-8')
    att["Content-Type"] = 'application/octet-stream'
    att["Content-Disposition"] = 'attachment;filename="latestResult.html"'
    msg = MIMEMultipart('related')
    msg['subject'] = Header("自动化测试报告", 'utf-8')
    msg.attach(att)
    #加邮件头
    #加邮件头
    msg['From'] = 'lili1505115417@sina.com <lili1505115417@sina.com>'
    msg['To'] = 'lili1505115417@126.com'
    smtp=smtplib.SMTP()
    smtp.connect("smtp.sina.com",25)
    smtp.login("lili1505115417@sina.com","lili123456")
    smtp.sendmail('lili1505115417@sina.com','lili1505115417@126.com',msg.as_string())
    smtp.quit()
    print("email has send out!")

    #查找测试报告目录,找到最新生成的测试报告文件,并发送
    def new_report(test_report):
    lists=os.listdir(test_report)
    lists.sort(key=lambda fn :os.path.getmtime(test_report+'\'+fn))
    print(('最新的文件为:'+lists[-1]))
    file_new=os.path.join(test_report,lists[-1])
    print(file_new)
    return file_new
    if __name__=='__main__':
    test_dir = r'E:selenium+puthon+pycharm学习 est_project est_case'
    discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    now = time.strftime("%Y-%m-%d %H-%M-%S")
    filename = test_dir + '//' + now + 'result.html'
    fp = open(filename, 'wb')
    runner = HTMLTestRunner(stream=fp, title='测试报告', description='用例测试执行情况:')
    runner.run(discover)
    fp.close()
    newReport = new_report(test_dir)
    send_mail(newReport)

    登录126邮件可以查看到:

    生成的测试报告通过邮件附件打开可以看到:

  • 相关阅读:
    react redux 使用
    github 退出和别人共同开发的仓库
    在react package.json中配置代理解决跨域
    禁止浏览器sources下webpack文件 显示源码
    redux connect 装饰器配置和安装
    Odoo 在action的domain和context中使用self.env
    odoo 字段后面添加button按钮,页签tree再加group显示字段
    Odoo -- 开发者模式创建的群组、动作没有xml id怎么办
    Mac必备神器Homebrew mac下镜像飞速安装Homebrew教程
    Vue -- keyup、watch、computed、nrm的安装
  • 原文地址:https://www.cnblogs.com/linxiu-0925/p/9946903.html
Copyright © 2020-2023  润新知