Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考

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

#==============定义发送邮件 ===============

def send_mail(file_new):
    f = open(file_new,‘rb‘)
    #读取测试报告正文
    mail_body = f.read()
    f.close()
    # 发送邮箱服务器
    smtpserver = "smtp.163.com"
    # 发件人邮箱
    sender = ‘[email protected]‘
    # 接收人邮箱
    receiver = ‘[email protected]‘
    # 发送邮箱用户信息
    username = ‘[email protected]‘
    # 客户端授权码
    password = ‘WMQyyj2018‘

    #通过  模块构造的带附件的邮件如图
    msg = MIMEMultipart()
    #编写html类型的邮件正文,MIMEtext()用于定义邮件正文
    #发送正文
    text = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
    text[‘Subject‘] = Header(‘自动化测试报告‘, ‘utf-8‘)
    msg.attach(text)
    #发送附件
    #Header()用于定义邮件标题
    msg[‘Subject‘] = Header(‘自动化测试报告‘, ‘utf-8‘)
    msg_file = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
    msg_file[‘Content-Type‘] = ‘application/octet-stream‘
    msg_file["Content-Disposition"] = ‘attachment; filename="TestReport.html"‘
    msg.attach(msg_file)

# 如果只发正文的话,上面的代码 从password 下面到这段注释上面
# 全部替换为下面的两行代码即可,上面的代码是增加了发送附件的功能。
#     text = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
#     text[‘Subject‘] = Header(‘自动化测试报告‘, ‘utf-8‘)

    #连接发送邮件
    # smtp = smtplib.SMTP()
    # smtp.connect(smtpserver)
    # smtp.login(username, password)
    # smtp.sendmail(‘[email protected]‘, ‘[email protected]‘, msg.as_string())
    # smtp.quit()
    # print("email has send out !")

    #一样的逻辑,不一样的写法导致上面的发送失败,下面这种发送成功,所以要使用msg[‘from‘]这种写法
    msg[‘from‘] = ‘[email protected]‘  # 发送邮件的人
    msg[‘to‘] = ‘[email protected]‘
    # smtp = smtplib.SMTP(‘smtp.163.com‘, 25)  # 连接服务器
    smtp = smtplib.SMTP()
    smtp.connect(‘smtp.163.com‘)
    smtp.login(username, password)  # 登录的用户名和密码
    smtp.sendmail(msg[‘from‘], msg[‘to‘], msg.as_string())  # 发送邮件
    smtp.quit()
    print(‘sendmail success‘)

#======================查找最新的测试报告==========================

def new_report(testreport):
    #方式1:
    # lists = os.listdir(testreport)
    # lists.sort(key = lambda fn: os.path.getmtime(testreport + ‘\\‘ + fn))
    # file_new = os.path.join(testreport,lists[-1])
    # print(file_new)
    # return file_new

    #方式2:
    dirs = os.listdir(testreport)
    dirs.sort()
    newreportname = dirs[-1]
    print(‘The new report name: {0}‘.format(newreportname))
    file_new = os.path.join(testreport, newreportname)
    return file_new

if __name__ == ‘__main__‘:
    test_dir = os.path.join(os.getcwd(),‘test_case‘)
    #test_report = "D:/SProgram/PySpace/wmq/SendHtmlMail/report"
    test_report = os.path.join(os.getcwd(), ‘report‘)
    discover = unittest.defaultTestLoader.discover(test_dir,pattern=‘test*.py‘)

    now = time.strftime("%Y-%m-%d-%H_%M_%S")
    filename = test_report+‘/result_‘+now+‘.html‘
    fp = open(filename,‘wb‘)
    runner = HTMLTestRunner(stream=fp,title="测试报告",description=‘用例执行情况:‘)
    runner.run(discover)
    fp.close()

    new_report = new_report(test_report)
    send_mail(new_report)
时间: 2024-10-10 06:23:48

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件的相关文章

selenium测试报告生成、找到测试报告路径、实现发邮件(整合)

有这样的一个场景: 假设生成的测试报告与多人相关,每个人都去测试服务器査看就会比较麻烦,如果把这种主动的且不及时的査看变成被动且及时的査收,就方便多了. 整个程序的执行过程可以分为三个步骤: ①    通过unittest框架的discover()找到匹配测试用例,由HTMLTestRunner的run()方法执行测试用例并生成最新的测试报告. ②    调用new_report()函数找到测试报告目录(test_case)下最新生成的测试报告,返回测试报告的路径. ③    将得到的最新测试报

python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)

3. 如何将第一步得到的地址和名称 输入 进第二步里的表格中呢... 用上述查找元素的方法,发现HTMLTestRunner.py中REPORT_TEST_WITH_OUTPUT_TMPL是用来输出测试结果的.我们只需要将截图url和名称写进去即可. 假定我们目前已经可以定位到每个用例的具体截图,并将截图url定义为变量html,名称定义成变量name,修改HTMLTestRunner.py的代码如下: REPORT_TEST_WITH_OUTPUT_TMPL = r"""

Python+request+ smtplib 测试结果html报告邮件发送(下)《六》

配置与实现代码分隔编写,详见如下: 目录结构如下: 1.cfg.ini的配置信息写法如下: [email] ;--------------------------使用腾讯企业邮箱作为发件人的操作如下--------------------- smtp_server = smtp.qq.com Port = 465 Sender = 请写你自己的QQ邮箱 psw = 请写你自己的QQ授权码 Receiver = [email protected] (注:请写你的邮件收件人邮箱) 2.readCon

Python单元测试框架之pytest -- 生成测试报告

继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #coding=utf-8 class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert x == "h

【selenium】HTMLTestRunner测试报告生成

__author__ = 'Administrator' #coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions imp

最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程.以后各位只要着重如何编写测试用例即可,其他模板可以套用的,希望帮助到大家. 目录 一.编写测试用例 二.执行测试用例,查找最新测试用例,自动发送测试报告 三.定时执行测试用例 3.1方案一:Windows任务计划 3.2方案二:Jenkins持续集成 四.成果验收 环境准备: 操作系统:Windows7 集成开发环境:ec

python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)

简介 上一篇,我们虽然已经将生成的最新的测试报告发出去了,但是MIMEText 只能发送正文,无法带附件,因此我还需要继续改造我们的代码,实现可以发送带有附件的邮件.发送带附件的需要导入另外一个模块 MIMEMultipart.还有就是测 试负责人不止一个人,需要将测试报告发给多个人,也就是多个收件人.这篇主要是围绕这两个主题进行讲解的. 大致思路 (一)带有附件发送邮件 1.导入模块 MIMEMultipart from email.mime.multipart import MIMEMult

以邮件的形式发送测试报告

1.创建一个Email 目录(文件夹),在 Email 中创建 bing.py测试用例 from selenium import webdriver from time import sleep import unittest # driver.find_element_by_xpath("//input[@id='sb_form_q']").send_keys("CMBC") # driver.find_element_by_xpath("//input

以邮件附件的形式发送测试报告

1. 创建 EmailAnnex目录, 在 EmailAnnex 下创建 bing.py,并编写 from selenium import webdriver from time import sleep import unittest class Bing(unittest.TestCase): """bing 搜索测试""" def setUp(self): self.driver = webdriver.Firefox() self.dri