zoukankan      html  css  js  c++  java
  • Selenium2+python自动化66-装饰器之运行失败截图【转载】

    前言

    对于用例失败截图,很多小伙伴都希望在用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易。

    这里分享下我的一些思路,当然目前还没找到完美的解决方案,我的思路是用装饰器去解决,希望有高手已经实现的可以指点下。

    一、函数作为形参

    1.函数的参数也可以是另外一个函数,也就是说传的参数不仅可以是常见的字符串、数字等,也可以是一个函数

    2.定义aaa为一个加法函数,bbb为减法函数

    3.calculate这个函数传三个参数,第一个参数是一个函数,另外两个参数是函数的两个参数

    二、万能装饰器

    1.由于不知道我们被调用的函数到底有几个参数,这时候就可以写一个万能的装饰器,传可变参数

    2.这个装饰器实现一个简单功能:运行一个函数,运行不抛异常,就打印pass;运行函数抛异常就打印fail

    三、实现百度搜索功能

    # coding:utf-8
    from selenium import webdriver

    driver = webdriver.Firefox()

    # 截图功能
    def get_screen():
        '''截图'''
        import time
        nowTime = time.strftime("%Y_%m_%d_%H_%M_%S")
        driver.get_screenshot_as_file('%s.jpg' % nowTime)

    # 自动截图装饰器
    def screen(func):
        '''截图装饰器'''
        def inner(*args, **kwargs):
            try:
                f = func(*args, **kwargs)
                return f
            except:
                get_screen()  # 失败后截图
        return inner


    @screen
    def search(driver):
        driver.get("https://www.baidu.com")
        driver.find_element_by_id("kw11").send_keys("python")  # 此行运行失败的
        driver.find_element_by_id("su").click()

    search(driver)  # 执行search

    这个只是我实现的一个简单的功能,至于如何运用到测试用例中与unittest结合起来,实现的最大难点在于driver参数的处理,因为截图需要用到driver参数。

  • 相关阅读:
    Linux网络编程系列-TCP传输控制
    Lucene系列-索引文件
    python Web开发框架-Django (1)
    安卓课本例子-01-使用XML布局文件控制用户界面
    javaEE--数据库01
    安卓-08-布局管理器
    安卓-07-开发自定义的View--实践-跟随手指移动的小兔子
    安卓-06-使用XML和Java设置UI--实例--03--QQ相册
    安卓-05-使用Java设置UI--实验02-使用Java实现UI设置
    安卓-04-实例01-XML布局UI界面
  • 原文地址:https://www.cnblogs.com/caoj/p/7815750.html
Copyright © 2011-2022 走看看