自动化用例执行完后需要发送邮件通知接口执行情况。
在编写发送邮件功能时遇到两个问题,我们先看代码:
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
class SendEmail:
#定义全局变量存放发件人地址
global send_user
#定义全局变量存放邮件服务器
global email_host
#定义全局变量存放登陆密码
global password
email_host = "smtp.163.com"
send_user = "xxx" #这里省略,赋值为发件人地址
password = "xxx" #这里省略,赋值为登陆密码
#发送邮件方法
def send_mail(self,user_list,sub,content):
user = "Mushishi"+"<"+send_user+">"
message = MIMEText(content,_subtype='plain',_charset='utf-8')
message['Subject'] = sub
message['From'] = user
message['To'] = ";".join(user_list)
server = smtplib.SMTP()
server.connect(email_host)
server.login(send_user,password)
server.sendmail(user,user_list,message.as_string())
server.close()
#定义发送内容,调用发送邮件方法
def send_main(self,pass_list,fail_list):
pass_num = float(len(pass_list))
fail_num = float(len(fail_list))
count_num = pass_num+fail_num
#90%
pass_result = "%.2f%%" %(pass_num/count_num*100)
fail_result = "%.2f%%" %(fail_num/count_num*100)
user_list = ['609037724@qq.com']
sub = "接口自动化测试报告"
content = "此次一共运行接口个数为%s个,通过个数为%s个,失败个数为%s,通过率为%s,失败率为%s" %(count_num,pass_num,fail_num,pass_result,fail_result )
self.send_mail(user_list,sub,content)
if __name__ == '__main__':
sen = SendEmail()
sen.send_main([1,2,3,4],[2,3,4,5,6,7])
这里有两个问题:
1、password第一次赋值为我的登陆密码,执行报错:
百度后说要开启163邮箱的SMTP授权,获得一个授权密码。
操作参考https://jingyan.baidu.com/article/c275f6ba33a95de33d7567d9.html
将password更新成授权密码后执行成功。
2、报告内容
按照上面的内容,接口个数都是带小数位的,觉得不太规范,看了下代码,
pass_num = float(len(pass_list))
fail_num = float(len(fail_list))
这里都转成了float类型。我改成了int类型后,报告如下:
通过率和失败率又获取不到了,于是把上面代码修改为如下:
def send_main(self,pass_list,fail_list):
pass_num = len(pass_list)
fail_num = len(fail_list)
count_num = pass_num+fail_num
pass_rate = "%.2f%%" %(float(pass_num)/count_num*100)
fail_rate = '%.2f%%' %(float(fail_num)/count_num*100)
user_list=['245893097@qq.com']
sub = '接口自动化测试报告'
content = "此次一共运行接口个数为%s个,通过个数为%s个,失败个数为%s个,通过率为%s,失败率为%s" %(count_num,pass_num,fail_num,pass_rate,fail_rate)
self.send_email(user_list,sub,content)
报告如下,搞定!