请点击输入图片描述(最多18字)
前言
每当测试结束后,测试人员都会输出一份详细的测试报告给到领导或者组内人员,那么当我们自动化测试结束后的时候,也可以让其自动发送测试报告。
smtplib
一,图片提取 1. Texmod 2. 打开,点上面的文件夹按钮,选择游戏目录下的(游戏名).exe 3. 点中间的 Logging Mode。在下面的Output Format和Log with选择输出图片格式和提取热键,在Output Folder中选择输出目录。点Run。
smtplib是属于Python发送邮件的一个库。其简单的原理是通过SMTP的方式来实现发送报告的。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
smtplib中对其SMTP的协议进行了一个封装,其中email是用来支持发送文本、图片和携带附件等功能。
登录邮箱
发送邮件前肯定需要登录邮箱了,这里安静先通过163的邮箱进行介绍,登录是通过smtplib这个库进行来完成的。
这里需要先确认发件人的邮箱是否开通了SMTP邮箱权限,可以登录到163邮箱中,选择SMTP/IMAP中选择开启SMTP服务。勾选后进行连接登录:
邮件发送类型
邮件发送通过Python中的email的库来实现的,其中email发送邮件可以支持多类型,比如纯文本、纯图片、文本加附件等方法,这里安静会一个个进行介绍。
文本发送
发送邮件肯定包含发送人、收件人、邮件标题、邮件内容等内容,这里email中的Mimetext的方法可以帮助我们实现发送纯文本内容。
通过执行后可以发现,QQ邮箱已经成功的收到了邮件信息。
图片发送
这个模块可以帮助我们将我们需要的图片内容添加到邮件中,需要我们将本地的图片导入到html中,通过html中进行发送,如果你通过链接的形式发送会失败,邮件会识别成恶意链接,从而进行拦截。这里安静这接在上面的代码中进行加入HTML格式,将图片嵌套在html文本中发送:
import smtplibfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipart 服务器地址smtpserver = &39;39;xxxxxx@163.com& 发送密码password = &39;39;821006052@qq.com& 邮件标题subject = &39;39;&39;<html><head>自动化测试报告中带图片</head><body><p><p><img src=&34;></p><p></body></html>&39;&39;html&39;utf-8&39;123.jpg&39;rb& 定义图片ID在HTML中展示mag.add_header(&39;,&39;) 添加正文message.attach(body)39;From& 接收地址message[&39;] = receivers39;subject& 连接服务器smtp.connect(smtpserver) 发送账号信息smtp.sendmail(user,receivers,message.as_string())# 关闭smtp.quit()
通过执行上面的代码可以看到QQ邮箱,已经接收到了邮件信息,打开邮箱清楚的看到,图片已经在文本中添加了。
附件发送
发送邮件需要带附件的情况下,我们可以使用email库中的MIMEMUltipart模块。
通过执行代码清楚的看到邮件中已经携带了附件内容,并且成功发送了。
zmail邮件
一些测试同学看到上面这么多代码估计脑袋就大,安静在给大家介绍一种简单方便的发送邮件库zmail,这个库的目的就是为了方便发送邮件。
但是要注意zmail这个库目前只支持Python3不支持Python2,想必都2021年了,没人再用Python2了吧。
安装:
pipinstall zmail
文本发送
继续从文本发送,先创建一个zmail服务,将其发件人邮箱账号以及邮箱授权码(163设置中的SMTP打开)进行连接通过zmail服务连接。编辑文本进行发送:
import zmail39;xxxxxx@163.com& 授权码密码password = &39; 邮件主题body = {&39;: &34;, 34;content_text&39;这是邮件的文本内容,自动化测试结果& 邮件文本}39;821006052@qq.com& 发送邮件server.send_mail(receivers,body)
通过代码就可以看出来很清楚的就讲邮件内容展现出来,执行代码,成功的收到邮件信息。
图片发送
同样文本发送完成后,继续来我们的图片发送。这里可以通过图片的base64的格式加入到html的代码中,然后放入到文本中进行发送。
import zmail39;xxxxx@163.com& 授权码密码password = &39;39;&39;<p> 这是邮件的文本内容,自动化测试结果 </p><img src=&39;/>&39;& 邮件主题body = {&39;: &34;, 34;content_html& html格式}39;821006052@qq.com& 发送邮件server.send_mail(receivers,body)
通过代码执行后可以发现,邮件成功的收到了并且图片和文本都存在邮件中:
附件发送
1、使用mod导入工具texmod进行导入。2、生化危机6mod安装教程。3、工具使用方法:使用解压文件中的贴图提取工具Texmod提取MOD图片后,运行游戏即可。安装以下方法即可完成MOD的导入。4、在TexMod里,点左边的PackageMode。在下面。
通过上面的两个例子这里应该很清楚的就能知道了,我们只需要将附件信息直接写在我们的body文本中就行了。
可以用以下方法保存:1、图片提取。2、下载Texmod。3、打开软件,点上面的文件夹按钮,选择游戏目录下的(游戏名).exe。4、修改退出游戏,在刚才设定的输出目录中找到提取出来的图片,用图形编辑软件进行修改,以原格式及文件。
import zmail39;xxxxx@163.com& 授权码密码password = &39;39;&39;<p> 这个邮件中携带附件,自动化测试结果 </p><img src=&39;/>&39;& 邮件主题body = {&39;: &34;, 34;content_html& html格式&34;: &34; 收件人receivers = &39;# 发送邮件server.send_mail(receivers,body)
通过制定代码后发现,邮件已经成功发送且携带了附件内容。
yagmail
yagmail也是属于Python发送邮件的一个库,这种库相比前面两种依旧做了很大的简介,使用更加方便,因为属于Python的第三方库,我们安装。
安装:
pip install yagmail
发送文本
这里一样先将yagmail创建一个服务对象,通过将发件人的账号,授权码进行连接登录。
import yagmail39;xxxxxx@163.com& 授权码密码password = &39;39;smtp.163.com& 收件人receivers = &39;text = &39; 39;自动化测试报告& 邮件标题server.send(contents=text,to=receivers,subject=title)
通过发现yagmail的代码比zmail的代码更加简洁了一些,但是整体内容是差不多的。执行代码,发现我们已经将其报告发送成功了。
图片发送
yagmail中携带了发送图片的方法,直接将图片路径方进入就可以了,其中这里需要使用yagmai.inline的方法将图片添加到正文中:
import yagmail39;xxxx@163.com& 授权码密码password = &39;39;smtp.163.com& 收件人receivers = &39;text = &39; 39;自动化测试报告携带图片& 邮件标题img = yagmail.inline(&39;)# 图片地址server.send(contents=text,to=receivers,subject=title,attachments=img)
执行代码发现,我们已经成功的将图片添加到了邮件中:
附件发送
附件形式yagmail中也提到了单独的方法,通过attachments的方法来添加附件文件。
import yagmail39;xxxxxx@163.com& 授权码密码password = &39;39;smtp.163.com& 收件人receivers = &39;text = &39; 39;自动化测试报告携带附件& 邮件标题fujian = &39;# 附件server.send(contents=text,to=receivers,subject=title,attachments=fujian)
通过执行代码发现,我们已经成功的将邮件携带附件发送成功了。
实战演示
前面已经将Python几种发送报告的库都做了一个简单的介绍,安静在这里在给大家通过UnitTest生成一份测试报告,然后在通过邮件的形式发送出去来进行演示,方便大家记忆。
古话说,好记性不如烂笔头,脑子笨,咱多写几遍,就记住了。
UnitTest生成报告并发送报告
安静随便写几个测试用例,然后通过HTMLTestRunner的方式生成测试报告。
通过执行代码发现测试报告已经生成了,接下来我们需要通过将其测试报告内容添加到邮件中然后在进行发送。
邮件加入测试报告结果
上面已经通过UnitTest单元测试框架生成了测试报告,接下来就是需要我们通过邮件库来进行发送了,安静这里选择了yagmail,别问为什么,想用哪个就用了。
import yagmail39;xxxxxx@163.com& 授权码密码password = &39;39;smtp.163.com& 收件人receivers = &39;with open(&39;,&39;)as f:text = f.read()title = &39; 39;E:\web\result.html& 附件server.send(contents=text.decode(&39;),to=receivers,subject=title,attachments=fujian)
1、工具说明:本版为古墓丽影9MOD导入工具Texmod,附古墓丽影9Texmod怎么用的使用教程。2、使用说明:古墓丽影9Texmod,使用解压文件中的贴图提取工具Texmod提取古墓丽影9劳拉MOD图片后,运行游戏即可。按照以下方法即可完成MOD。
通过执行代码后发现测试报告内容已经成功发送了(这里有个问题就是排版可能发生了一些改变),但是整体的报告内容以及附件全部都发送了。
总结
安静分别简单的介绍了Python发送邮件的方法,其中有简单的,也有复杂操作的,但是据图使用哪种就要看个人的喜好了。