繁体   English   中英

在自定义测试库中捕获有关失败的屏幕截图

[英]Capturing Screenshot on failure in custom test library

我目前正在使用ROBOT进行一些自动化测试,除非遇到问题。 使用SeleniumLibrary关键字在.robot文件中失败的所有内容均会按预期准确捕获屏幕截图。

不幸的是,我在SeleniumLibrary旁边有一些自定义库,我想做同样的事情,但事实并非如此。 因此,例如,如果我从CustomLibrary1调用了一个关键字,但执行self.selib.wait_until_page_contains("Hello")失败,那么它将简单地通过测试而不会捕获屏幕截图。

到目前为止,我唯一能找到的解决方法是:

  1. 将每个关键字正文投入try并使用

except: self.selib.capture_page_screenshot() (不理想,因为我有数百个关键字)。

  1. 将测试摘要添加到我拥有的每个测试中,并使用

Run Keyword If Test Failed Capture Test Screenshot ,这也不理想,因为如果在.robot文件中运行SeleniumLibrary关键字时测试失败,则将捕获两个截图,并且我有一些混合数据驱动/关键字驱动的测试不要在测试之间以及仅在所有测试结束时调用测试拆卸。

有没有办法在自定义库中注册“ run_on_failure”功能?

即使您有数百个关键字, try块也是做到这一点的最佳方法。

也许您可以这样管理它:

keywords = ['Hello', 'World'] # etc.

# Include the try block in a function.
def try_keyword(keyword):
    try:
        self.selib.wait_until_page_contains(keyword)
    except:
        self.selib.capture_page_screenshot()
    # Eventually do_something_else()

# Pass a function as an argument
def try_function_and_keyword(function, keyword):
    try:
        function(keyword)
    except:
        self.selib.capture_page_screenshot()
    # Eventually do_something_else()

for keyword in keywords:
    try_keyword(keyword)
    try_function_and_keyword(driver.find_element_by_id, keyword)

我认为可能的异常涉及您的脚本。

如果是这样,也许使用日志记录模块可能会有用。 或者,即使该站点可能涉及例外,您也可能需要请求或响应数据。 您可以看一下browsermob-proxy ,这是一个非常有用的模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM