Python+selenium+HTMLTestRunner邮件形式发送测试报告

已邮件的形式发送测试报告:

  以打开bing主页,搜索“墨菲特”这样一个动作作为测试用例,然后将测试的结果以邮件的方式发送到126邮箱(自发自收)

1.编写测试用例Demo(bing.py)

from selenium import webdriver
from time import sleep
import unittest
class Bing(unittest.TestCase):
    # 搭建测试环境
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)
        self.base_url = "https://cn.bing.com/"
    # 测试步骤
    def test_bingSearch(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_xpath('//*[@id="sb_form_q"]').send_keys("墨菲特")
        sleep(3)
        driver.find_element_by_xpath('//*[@id="sb_form_go"]').click()
    # 还原环境
    def tearDown(self):
        self.driver.quit()

  这就是测试用例的Demo,可以先运行一下试试能否正确的执行

2.编写发送邮件代码send_mail.py

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

# 发送邮件
def sendReport(file_new):
    # 以只读的方式打开文件,取别名为f
    with open(file_new,"rb") as f:
        # 读取文件内容,存放到mai_body中
        mail_body = f.read()
    # 发邮件的内容
    msg = MIMEText(mail_body,"html","utf-8")
    # 标题
    msg["Subject"] = Header("自动化测试报告",'utf-8')
    # 发件人
    msg["From"] = "用户名"
    # 收件人,如果给多人发送邮件,以分号隔开
    msg["To"] = "用户名"
    # SMTP协议,调用smtp.qq.com
    smtp = smtplib.SMTP('smtp.126.com')
    # 登陆邮箱,参数为用户名和授权码
    smtp.login("用户名", "授权码")
    # 发件人给接收者发送邮件,收件人以分号隔开,内容以字符串形式
    smtp.sendmail(msg["From"],msg["To"].split(";"),msg.as_string())
    # 退出
    smtp.quit()

# 查找测试报告目录,找到最新的测试报告文件,把最新的测试报告文件作为邮件发送内容
def newReport(testReport):
    # 返回测试报告所在目录下所有的文件夹
    lists = os.listdir(testReport)
    # 获得升序排列后的测试报告列表
    lists2 = sorted(lists)
    # 获得最后一个测试报告地址
    file_new = os.path.join(testReport,lists2[-1])
    print(file_new)
    return file_new

# 运行
if __name__ == "__main__":
    # 测试用例所在目录
    test_dir = "D:\\PythonDemo\\SeleniumProject\\Email"
    test_report = "D:\\testresult"
    # 加载测试用例所在目录下的bing.py测试用例文件
    discover = unittest.defaultTestLoader.discover(test_dir,pattern="bing.py")
    #获取当前时间
    now = time.strftime("%Y-%m-%d %H%M%S")
    # 测试报告名,测试结果路径+时间+result.html
    filename = test_report + '\\' + now + 'result.html'
    # 以只读的方式打开测试报告
    fp = open(filename,"wb")
    runner = HTMLTestRunner(stream=fp,title="测试报告",description="测试用例执行情况")
    # 执行测试用例,测试用例在discover中加载
    runner.run(discover)
    fp.close()

    # 拿到最新的测试报告
    new_report = newReport(test_report)
    #发送邮件
    sendReport(new_report)

  这里把测试报告放在D:\\testresult下,测试用例路径就是存放相应代码的路径。注意这里由于是第三方登录邮箱,所以要获取对应的授权码,具体怎么设置需要根据具体的邮箱设置方法去看。126邮箱设置的方法如下:

  在这个POP3/SMTP/IMAP中去获取授权码,然后复制粘贴到代码中的授权码的地方,就OK了。

 

posted @ 2019-01-15 22:01  bigbigtong  阅读(358)  评论(0编辑  收藏  举报