Python+Selenium框架篇10-封装一个自动发邮件测试报告功能系列-下

本文介绍如何封装一个自动发邮件测试报告功能系列
在上两篇介绍了【发送带附件邮件】和【【找到最新的测试报告】的方法,接下来我介绍何如将自动发送邮件测试报告方法集成封装到自动化项目中

层次结构如下:
在这里插入图片描述

首先我们将这两个方法统一封装到公共包method.py方法类里,方便以后调取
代码如下:

import time
import os.path
from email.mime.text import MIMEText
from email.header import Header
import smtplib


class Method(object):

    def __init__(self, driver):
        self.driver = driver

    # 保存截图
    def get_windows_img(self):
        """
        在这里我们把file_path这个参数写死,直接保存到我们项目根目录的一个文件夹.\img下
        """
        file_path = os.path.dirname(os.path.abspath('.')) + '/img/'
        rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
        screen_name = file_path + rq + '.png'
        try:
            self.driver.get_screenshot_as_file(screen_name)
            print("已将截图保存到文件夹/img")
        except NameError as e:
            print("截图保存失败! %s" % e)
            self.get_windows_img()

    #定义发送邮件
    def send_mail(file_new):
        f = open(file_new,'rb')
        mail_bady = f.read()
        f.close()

        msg = MIMEText(mail_bady, 'html', 'utf-8')
        rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
        msg['Subject'] = Header("自动化测试报告" + rq, 'utf-8')

        try:
            smtp = smtplib.SMTP()
            smtp.connect("smtp.qq.com")
            smtp.login("xxxx@qq.com", "password")
            smtp.sendmail("xxxx@qq.com", "xxxx@qq.com", msg.as_string())
            smtp.quit()
            print('自动化测试报告发送成功 !')
        except Exception as e:
            print("自动化测试报告发送失败 !")
            print(e)

    #查找最新测试报告
    def new_report(testreport):
        lists = os.listdir(testreport)
        lists.sort(key=lambda fn: os.path.getatime(testreport + "\\" + fn))
        file_new = os.path.join(testreport,lists[-1])
        print(file_new)
        return file_new

再结合之前di5篇介绍的HTMLTestRunner自动化测试报告方法,新建一个TestRunner.py文件
代码如下:

import HTMLTestRunner
import os,time
import unittest
from com.method import Method


now = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())  #获取当前系统时间
file_path = os.path.dirname(os.path.abspath('.')) + '/report/'   #设置报告保存路径
HtmlFile = file_path + now + "HTMLtemplate.html"    #设置报告名称
fp = open(HtmlFile, 'wb')

#构建suit
suite = unittest.TestLoader().discover("testcase")

if __name__=="__main__":

    #初始化HTMLTestRunner实例对象,设置报告title和description。
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title=u'百度测试报告',
        description=u"用例执行情况:"
    )
    #开始执行测试套件
    runner.run(suite)
    #关闭资源
    fp.close()

    newreport = Method.new_report(file_path)    #获取最新报告
    Method.send_email(newreport)     #发送测试报告

整个程序的执行过程可分为三个步骤:
【1】通过unittest框架的discover()方法加载测试用例,再由HTMLRunner的run()方法执行测试用例并生成测试报告。
【2】调用封装的new_report()方法找到repor目录下最新生成的测试报告,再返回其路径。
【3】最后将获取到最新测试报告的路径传递给封装的send_email()方法,实现自动发邮件测试报告功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值