selenium 4

65 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

当我们搭建好测试环境并且执行完自动化用例之后,会生成测试报告,但是如果是下班之后执行一遍,要第二天上班才能看得到结果,这是我们可以用到测试报告以邮件的方式自动发送给测试人员,这时我们不管身处何地,只要打开邮箱就可以看到自动化测试的结果。 首先发邮件操作是属于第三方模块,所以我们先得把包导好:
import yagmail
import smtplib
import logging
from email.header import Header
from email.mime.text import MIMEText

发送邮箱有两种方法,一种是属于python自带的,第二种是需要导入第三方模块的,具体内容如下:
def email(self,title,report):

    #第一种方法
    with open(report, 'r', encoding='utf8') as f:
        mail_body = f.read()                      # 打开测试报告,读取报告内容作为邮件内容
    sender = '这里填写发出邮箱号'                           # 发出邮箱
    receiver = '接受测试报告的邮箱号'         # 接收邮箱
    mail_server = 'smtp.163.com'                              # 邮箱服务地址
    subject = title                                           # 邮件标题
    username = '用户名'                         # 邮箱登录名
    passwd = '密码'                                      # 密码(需要在163邮箱设置中授权)
    message = MIMEText(mail_body, 'html', 'utf-8')            # 设置邮件格式
    message['Subject'] = Header(subject, charset='utf-8')
     # 邮箱登录
    smtp = smtplib.SMTP()                                     # 实例化smtplib.SMTP()类对象
    smtp.connect(mail_server)                                 # 连接邮件服务器
    smtp.login(username, passwd)                              # 登录
    # 发送邮件
    smtp.sendmail(sender, receiver, message.as_string())
    self.getlog().info('邮箱:' + receiver + ',发送邮件成功!\n')  # 打印log
    smtp.quit()
    
    

第二种方法: 连接邮箱服务器 发送方邮箱+授权码+邮箱服务地址 yag = yagmail.SMTP(user='邮箱号', password='密码', host='smtp.163.com', encoding='GBK') # 邮件正文 支持html,支持上传附件(填写在任意位置皆可) # 1. 上传附件 content = ['以下是自动化测试报告,请查收。', rf'{report}', '......']
# 2. 不上传附件 # content = ['以下是自动化测试报告,请查收。']
# 发送的几种方式 发送方+主题+内容 # 1. 单个用户不带附件 # yag.send('邮箱号', title, content)
# 2. 单个用户,添加附件 yag.send('xxxxxx@163.com', f'{title}', content, rf'{report}')
# 3. 多个用户,多个附件 # yag.send(['woshijieshoufang1@qq.com', 'woshijieshoufang2@163.com'], u'自动化测试报告', content, # [r'E:\test\test.xlsx', r'E:\test\abc.jpg', r'E:\test\test.txt'])
self.getlog().info('发送邮件成功!\n') # 打印log
yag.close()

以上两种方法都是以163邮箱为例子,如果是其他邮箱需要更换服务器。第二种方法相对于第一种的话是比较简单的,所以平常的话我可能更喜欢用第二种。这里需要注意的是这里的密码不是你的邮箱密码,而是在163邮箱设置中授权后的自动化登录的密码,同时还需要添加登录设备才能够发送。