zoukankan      html  css  js  c++  java
  • 测试过程中发生异常或断言失败时进行屏幕截图

    1.获取当前的日期及时间,用于生成保存截图文件目录名

    #!usr/bin/env python  
    #-*- coding:utf-8 -*-
    
    import time
    from datetime import datetime
    '''
    本文件主要用于获取当前的日期以及时间
    用于生成保存截图文件目录名
    '''
    
    def currentDate():
        date = time.localtime()
        #构造今天的日期字符串
        today = str(date.tm_year) + "-" + str(date.tm_mon) + "-" + str(date.tm_mday)
        return today
    def currentTime():
        timeStr = datetime.now()
        #构造当前时间字符串
        now = timeStr.strftime('%H - %M - %S')
        return now
    
    if __name__ == '__main__':
        print(currentDate())
        print(currentTime())

    2.创建目录,用于存放异常截图

    #!usr/bin/env python  
    #-*- coding:utf-8 -*-  
    
    from DateUtil import currentTime,currentDate
    import os
    
    '''
    本文件主要用于创建目录,用于存放异常截图
    创建目录的方法仅供大家参考,将来用于根据测试
    需要创建测试人员需要的目录或文件等
    '''
    
    def createDir():
        #获取当前文件所在目录的绝对路径
        currentPath = os.path.dirname(os.path.abspath(__file__))
        #获取今天的日期字符串
        today = currentDate()
        #构造以今天日期命名的目录的绝对路径
        dateDir = os.path.join(currentPath,today)
        print(dateDir)
        if not os.path.exists(dateDir):
            #如果以今天日期命名的目录不存在则创建
            os.mkdir(dateDir)
        now = currentTime()
        #构造以当前时间命名的目录的绝对路径
        timeDir = os.path.join(dateDir,now)
        print(timeDir)
        if not os.path.exists(timeDir):
            os.mkdir(timeDir)
        return timeDir

    3.存放异常截图的目录,并得到本次实例中存放图片目录的绝对路径

    # !usr/bin/env python
    # -*- coding:utf-8 -*-
    #测试过程中发生异常或断言失败时进行屏幕截图
    
    from selenium import webdriver
    import unittest, time, os
    from FileUtil import createDir
    import traceback
    
    # 创建存放异常截图的目录,并得到本次实例中存放图片目录的绝对路径,并且作为全局变量,以共本次所有测试用例调用
    picDir = createDir()
    
    def takeScreenshot(driver, savePath, picName):
        # 封装截屏方法
        # 构造屏幕截图路径及图片名
        picPath = os.path.join(savePath + '.png')
        try:
            # 调用WebDriver提供的get_screenshot_as_file()方法
            # 将截取的屏幕图片保存为本地文件
            driver.get_screenshot_as_file(picPath)
        except Exception as e:
            print(traceback.print_exc())
    
    class TestFailCaptureScreen(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
    
        def testSoGouSearch(self):
            url = 'http://www.sogou.com'
            self.driver.get(url)
            try:
                self.driver.find_element_by_id('query').send_keys('光荣之路自动化测试')
                self.driver.find_element_by_id('stb').click()
                time.sleep(3)
                self.assertTrue('事在人为' in self.driver.page_source,
                                "'事在人为'关键字串在页面源代码中未找到")
            except AssertionError as e:
                #调用封装好的截图方法,进行截图并保存在本地磁盘
                takeScreenshot(self.driver,picDir,e)
            except Exception as e:
                print(traceback.print_exc())
                takeScreenshot(self.driver,picDir,e)
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == '__main__':
        unittest.mian()
  • 相关阅读:
    手写一个call、apply、bind
    setTimeout
    meta标签及Keywords
    用VSCode插件来一键填满Github的绿色格子吧-AutoCommit
    前端工具-定制ESLint 插件以及了解ESLint的运行原理
    JS基础-全方面掌握继承
    JS基础-该如何理解原型、原型链?
    前端中等算法-无重复字符的最长子串
    前端面试 js 你有多了解call,apply,bind?
    博客图片失效?使用npm工具一次下载/替换所有失效的外链图片
  • 原文地址:https://www.cnblogs.com/sleeping-cat/p/8278593.html
Copyright © 2011-2022 走看看