selenium+python如何将截图加入到HTML报告里
本帖最后由 qwe1024547862 于 2017-8-8 11:37 编辑如题,思路是:测试套件主函数里 执行用例,有异常报错的时候统一截图加入到测试报告里面。 然后进行邮件发送,脚本写完了,就是不知道怎么在测试套件里 将截图加入到测试报告里面。如果有大伙刚学习到这步的,也可以参考学习一下测试报告发邮件,我写的挺简单易懂的
# coding:utf-8
from selenium importwebdriver
import unittest
import os
import HTMLTestRunner
from HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib
import time
#===========定义用例异常截图=========
class screen(object):
u"""截图"""
def __init__(self,driver):
self.driver=driver
def __call__(self, f):
def inner(*args):
try:
return f(*args)
except:
nowTime=time.strftime("%Y_%m_%d_%H_%M_%S")
self.driver.get_screenshot_as_file('%s.jpg' % nowTime)
raise
return inner
#这里写了截图方法, 但是不知道在测试套件里面实现
#==============定义发送邮件==========
def send_mail(file_new):
_user='1024547862@qq.com'# 发件地址
_pwd="llkwiqghqubebbjj" #服务器授权码
_to="1192511945@qq.com" # 收件人地址,多人以分号分隔
# f = open(file_new,'rb')
# mail_body = f.read()
# f.close()
# 读取最新测试报告的内容
with open(file_new, "rb") as f:
mail_body = f.read()
msg = MIMEMultipart()
body = MIMEText(mail_body, 'html', 'utf-8')
msg['Subject'] = Header("自动化测试报告", 'utf-8')
msg['From'] = _user
msg['To'] = _to
msg.attach(body)
#
#
#添加附件
att=MIMEText(open(report_file,"rb").read(),"base64","utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename= " Automated test report .html"'
msg.attach(att)
#
#
#发送邮件
s = smtplib.SMTP_SSL("smtp.qq.com")
# s.set_debuglevel(1)
s.login(_user,_pwd)# 登录邮箱的账户和密码
s.sendmail(_user,_to, msg.as_string())
s.quit()
print(u'自动化邮件已发送')
#======查找测试目录,找到最新生成的测试报告文件======
def new_report(test_report):
lists = os.listdir(test_report) #列出目录的下所有文件和文件夹保存到lists
lists.sort(key=lambda fn:os.path.getmtime(test_report + "\\" + fn))#按时间排序
file_new = os.path.join(test_report,lists[-1]) #获取最新的文件保存到file_new
print(file_new)
return file_new
if __name__ == "__main__":
# unittest.TextTestRunner()
test_report=r"D:" # 报告存放路径
case_path = r"C:\Users\admin\PycharmProjects\yoyotest"#用例路径
report_path = r"D:"# 报告存放路径
report_file = new_report(report_path)# 获取最新的测试报告
discover = unittest.defaultTestLoader.discover(case_path,
pattern="test*.py",# 也可以指定具体脚本
top_level_dir=None)
print(discover)
# return discover
#======================测试报告============================
# html报告文件路径
now=time.strftime("%Y-%m-%d_%H-%M-%S") #加时间戳
report_abspath = os.path.join(report_path, "result"+now+".html")
fp = open(report_abspath, "wb")
runner = HTMLTestRunner(stream=fp,
title=u'自动化测试报告,测试结果如下:',
description=u'用例执行情况:')
# 调用函数返回值
runner.run(discover)
fp.close()
new_report = new_report(test_report)
send_mail(new_report)# 发送测试报告
不能实现吧 黑盒测试 发表于 2017-8-8 12:54
不能实现吧
: why,不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么 : why,不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么
你这个应该可以实现,用自己做的测试报告。如果是python unittest自带的话,就不知道。。。 别沉啊。。。。
页:
[1]