51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2368|回复: 4
打印 上一主题 下一主题

selenium+python如何将截图加入到HTML报告里

[复制链接]
  • TA的每日心情

    2017-10-22 19:44
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2017-8-8 11:31:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 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)  # 发送测试报告
    复制代码

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-10 09:16
  • 签到天数: 172 天

    连续签到: 2 天

    [LV.7]测试师长

    推荐
    发表于 2017-8-8 12:54:41 | 只看该作者
    不能实现吧
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情

    2017-10-22 19:44
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2017-8-8 13:57:52 | 只看该作者

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:32
  • 签到天数: 1907 天

    连续签到: 1 天

    [LV.Master]测试大本营

    4#
    发表于 2017-8-8 16:09:02 | 只看该作者
    : why,  不能么。。。。 我的天。。。。那单单的一个脚本然后把异常截图加入到测试报告html中,能实现么


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

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-6 13:21 , Processed in 0.072432 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表