随笔备忘记录-UI自动化测试-使用HTMLTestRunner生成测试报告,邮件发送

这篇随笔介绍了如何在UI自动化测试中利用HTMLTestRunner生成测试报告,并结合Python的email和smtplib模块将报告作为附件通过邮件发送。文章详细讲解了配置文件的创建、邮件信息的读取以及发送邮件的实现步骤,帮助读者掌握自动化测试报告管理和分享的方法。
摘要由CSDN通过智能技术生成

随便写点东西,有的是网上借鉴,有的是自己体会,总之都是根据自己的需求进行优化的一些东西,随笔备忘录
使用python3的email模块和smtplib模块可以实现发送邮件的动能。email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并发送给项目组的人
首先需要想一想邮件的接收人的管理,这里还是配置文件的操作
在项目Config文件夹下,新建config11.ini文件,新建read_config11.py文件
在framework文件夹下新建my_email.py文件
在这里插入图片描述
config11.ini文件配置内容如下

[sender]
username = gp
email = gp300000006@163.com
password = gp300000006


[addressed]
user1 = gp300000006@163.com
user2 = 300000006@qq.com
user3 = gp000000000@163.com

sender保存发件人的信息
addressed保存收件人的信息

read_config11.py文件是专门用来读取邮件信息的,代码如下:

# -*- encoding: utf-8 -*-
import configparser
import os
class ReadConfig():
    def __init__(self):
        path = os.path.dirname(os.path.relpath(__file__))
        #获取配置文件路径
        configpath = os.path.join(path, "config11.ini")
        # 创建管理对象
        self.config = configparser.ConfigParser()
        # 读ini文件
        self.config.read(configpath, encoding="utf-8")

    def config_get(self,key,section):
        '''读取配置文件字段的值并返回'''
        config_get = self.config.get(section,key)
        return  config_get

    def config_options(self, section):
        '''读取配置文件某section下所有键'''
        username = dict(self.config.items(section))
        return username

    def get_addkey(self, user):
        '''遍历获得配置文件收件人email'''
        sum = 0
        L = []
        for i in user:
            if sum < len(user):
                emails = self.config_get(i, 'addressed')
                L.append(emails)
                sum += 1
        return L

my_email.py文件代码:

# -*- encoding: utf-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart
import getcwd
import os
from Logs.log import log1
from Config.read_config11 import ReadConfig
import time

rq = time.strftime('%Y%m%d', time.localtime(time.time()))#获取本地时间 转换成日期
my_mail = ReadConfig()
sender = my_mail.config_get('email','sender')  # 发件人邮箱账号
password = my_mail.config_get('password','sender')  # 发件人邮箱密码
username = my_mail.config_get('username','sender') #发件人姓名
users = my_mail.config_options('addressed')     #收件人
addressed_emails = my_mail.get_addkey(users)  #收件人邮箱

path = getcwd.get_cwd()
file = os.path.join(path, 'report/xWMSxUI自动化测试报告.html')

def mail():
    try:
        # 创建一个带附件的实例
        message = MIMEMultipart()
        message['From']=formataddr([username,sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        log1.info('发件人姓名:%s' % username)
        log1.info('发件人邮箱:%s' % sender)
        message['To']=';'.join(addressed_emails)    # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        log1.info('收件人邮箱:' + ';'.join(addressed_emails))
        message['Subject']=rq + "xWMSxUI自动化测试报告.html"    # 邮件的主题,也可以说是标题

        # 邮件正文内容
        message.attach(MIMEText('附件为xWMSxUI自动化测试报告.html', 'plain', 'utf-8'))

        # 构造附件1,传送当前目录下的 test.txt 文件
        att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
        log1.info('读取附件')
        att1["Content-Type"] = 'application/octet-stream'
        # 这里的filename可以任意写,写什么名字,邮件中显示什么名字
        att1.add_header("Content-Disposition", "attachment", filename=("gbk", "", "xWMSxUI自动化测试报告.html"))
        # 附件名称非中文时的写法
        # att["Content-Disposition"] = 'attachment; filename="test.html")'
        message.attach(att1)
        log1.info('添加附件')

        server = smtplib.SMTP_SSL("smtp.163.com")  # 发件人邮箱中的SMTP服务器
        log1.info('连接163邮箱smtp服务')
        server.login(sender,password)  # 括号中对应的是发件人邮箱账号、邮箱密码
        log1.info('连接成功')
        server.sendmail(sender, addressed_emails, message.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
        server.quit()  # 关闭连接
        log1.info("邮件发送成功")
    except Exception:
        log1.error("邮件发送失败",exc_info=1)

在run.py文件开头加上from framework.my_email import mail,在最后加上mail()

下载HTMLTestRunner并把对应版本的.py文件复制到pytho3安装目录下的Lib文件夹下。能import进来相应的文件就可以了。
run.py代码添加如下

# -*- encoding: utf-8 -*-

import testsuites.test_wms_cf_kyc
import testsuites.test_wms_kyc_sh
import testsuites.test_wms_kyc_sh_wjm
import testsuites.test_wms_project_approval
import unittest
import HTMLTestRunnerCN
import os
import getcwd
from framework.my_email import mail

if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(testsuites.test_wms_cf_kyc.test_wms_cf_kyc('test_kyc'))
    suite.addTest(testsuites.test_wms_kyc_sh.test_wms_kyc_sh('test_kyc_sh'))
    suite.addTest(testsuites.test_wms_kyc_sh_wjm.test_wms_kyc_sh_wjm('test_kyc_sh_wjm'))
    suite.addTest(testsuites.test_wms_project_approval.test_wms_project_approval('test_wms_project_approval'))

    path = getcwd.get_cwd()
    file_path = os.path.join(path,'report/xWMSxUI自动化测试报告.html')
    fp = open(file_path,'wb')
    runner = HTMLTestRunnerCN.HTMLTestReportCN(
        stream = fp,
        title = 'UI自动化测试报告',
        description = '这就是个随便写的东西,哪有那么全?',
        tester = '不知道叫啥'
    )
    runner.run(suite)
    mail()
    fp.close()

运行之后可以看到在report文件夹下生成了html文件。文件夹打开这个html文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值