51Testing软件测试论坛

标题: selenium+python如何将截图加入到HTML报告里 [打印本页]

作者: qwe1024547862    时间: 2017-8-8 11:31
标题: selenium+python如何将截图加入到HTML报告里
本帖最后由 qwe1024547862 于 2017-8-8 11:37 编辑

如题,思路是:测试套件主函数里 执行用例,有异常报错的时候统一截图  加入到测试报告里面。 然后进行邮件发送,脚本写完了,就是不知道怎么在测试套件里 将截图加入到测试报告里面。  如果有大伙刚学习到这步的,也可以参考学习一下测试报告发邮件,我写的挺简单易懂的

复制代码
  1. # coding:utf-8
  2. from selenium import  webdriver
  3. import unittest
  4. import os
  5. import HTMLTestRunner
  6. from HTMLTestRunner import HTMLTestRunner
  7. from email.mime.text import MIMEText
  8. from email.mime.multipart import MIMEMultipart
  9. from email.header import Header
  10. import smtplib
  11. import time
  12. #===========定义用例异常截图=========
  13. class   screen(object):
  14.     u"""截图"""
  15.     def __init__(self,driver):
  16.         self.driver=driver
  17.     def __call__(self, f):
  18.         def inner(*args):
  19.             try:
  20.                 return f(*args)
  21.             except:
  22.                 nowTime=time.strftime("%Y_%m_%d_%H_%M_%S")
  23.                 self.driver.get_screenshot_as_file('%s.jpg' % nowTime)

  24.                 raise
  25.         return inner
  26.     #这里写了截图方法, 但是不知道在测试套件里面实现
  27. #==============定义发送邮件==========
  28. def send_mail(file_new):
  29.     _user='1024547862@qq.com'  # 发件地址
  30.     _pwd="llkwiqghqubebbjj"     #服务器授权码
  31.     _to="1192511945@qq.com"      # 收件人地址,多人以分号分隔
  32.     # f = open(file_new,'rb')
  33.     # mail_body = f.read()
  34.     # f.close()
  35.     # 读取最新测试报告的内容
  36.     with open(file_new, "rb") as f:
  37.         mail_body = f.read()
  38.     msg = MIMEMultipart()
  39.     body = MIMEText(mail_body, 'html', 'utf-8')
  40.     msg['Subject'] = Header("自动化测试报告", 'utf-8')
  41.     msg['From'] = _user
  42.     msg['To'] = _to
  43.     msg.attach(body)
  44.     #
  45.     #
  46.     #添加附件
  47.     att=MIMEText(open(report_file,"rb").read(),"base64","utf-8")
  48.     att["Content-Type"] = "application/octet-stream"
  49.     att["Content-Disposition"] = 'attachment; filename= " Automated test report .html"'
  50.     msg.attach(att)

  51.     #
  52.     #
  53.     #发送邮件
  54.     s = smtplib.SMTP_SSL("smtp.qq.com")
  55.     # s.set_debuglevel(1)
  56.     s.login(_user,_pwd)  # 登录邮箱的账户和密码
  57.     s.sendmail(_user,_to, msg.as_string())

  58.     s.quit()


  59.     print(u'自动化邮件已发送')

  60. #======查找测试目录,找到最新生成的测试报告文件======
  61. def new_report(test_report):
  62.     lists = os.listdir(test_report)                                    #列出目录的下所有文件和文件夹保存到lists
  63.     lists.sort(key=lambda fn:os.path.getmtime(test_report + "\\" + fn))#按时间排序
  64.     file_new = os.path.join(test_report,lists[-1])                     #获取最新的文件保存到file_new
  65.     print(file_new)
  66.     return file_new

  67. if __name__ == "__main__":
  68.     # unittest.TextTestRunner()
  69.     test_report=r"D:"   # 报告存放路径
  70.     case_path = r"C:\Users\admin\PycharmProjects\yoyotest"  #用例路径
  71.     report_path = r"D:"# 报告存放路径
  72.     report_file = new_report(report_path)# 获取最新的测试报告
  73.     discover = unittest.defaultTestLoader.discover(case_path,
  74.                                                    pattern="test*.py",  # 也可以指定具体脚本
  75.                                                    top_level_dir=None)
  76.     print(discover)
  77.     # return discover
  78. #======================测试报告============================
  79.     # html报告文件路径
  80.     now=time.strftime("%Y-%m-%d_%H-%M-%S")   #加时间戳
  81.     report_abspath = os.path.join(report_path, "result"+now+".html")
  82.     fp = open(report_abspath, "wb")
  83.     runner = HTMLTestRunner(stream=fp,
  84.                                            title=u'自动化测试报告,测试结果如下:',
  85.                                            description=u'用例执行情况:')

  86.     # 调用函数返回值
  87.     runner.run(discover)
  88.     fp.close()
  89.     new_report = new_report(test_report)
  90.     send_mail(new_report)  # 发送测试报告
复制代码


作者: 黑盒测试    时间: 2017-8-8 12:54
不能实现吧
作者: qwe1024547862    时间: 2017-8-8 13:57
黑盒测试 发表于 2017-8-8 12:54
不能实现吧

: why,  不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么
作者: cq520131517    时间: 2017-8-8 16:09
: why,  不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么


你这个应该可以实现,用自己做的测试报告。如果是python unittest自带的话,就不知道。。。
作者: qwe1024547862    时间: 2017-8-29 17:19
别沉啊。。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2