qwe1024547862 发表于 2017-8-8 11:31:06

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:41

不能实现吧

qwe1024547862 发表于 2017-8-8 13:57:52

黑盒测试 发表于 2017-8-8 12:54
不能实现吧

: why,不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么

cq520131517 发表于 2017-8-8 16:09:02

: why,不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么

你这个应该可以实现,用自己做的测试报告。如果是python unittest自带的话,就不知道。。。

qwe1024547862 发表于 2017-8-29 17:19:18

别沉啊。。。。
页: [1]
查看完整版本: selenium+python如何将截图加入到HTML报告里