RobotFramework / Selenium:如何在失败时将屏幕截图名称设置为测试用例名称



我想知道是否有可能使以下情况发生。假设我在 RIDE 中有 3 个测试用例,结果如下:

Testcase Easter  --  PASS
Testcase Christmas  --  FAIL
Testcase Foo  --  PASS

我想截取一个应该命名为testcase_christmas.png的屏幕截图(或者用"而不是"_",这无关紧要)。是否有可能动态地做到这一点,比如

${testcase}=    Get Testcase Name
Capture Page Screenshot    ${testcase}

或类似的东西?我正在使用:

  • Python 2.7.x (最新) 32 位
  • wxPython 2.8 32位
  • 壁虎驱动程序最新 64 位

机器人框架会自动设置变量${TEST NAME}以包含当前正在执行的测试的名称。请参阅用户指南中的自动变量)

SeleniumLibrary的捕获页面屏幕截图的文档显示,您可以为其指定文件名作为第一个参数。

将这两者放在一起,您可以这样做:

Capture page screenshot  ${TEST NAME}.png

我这样做的方法是创建一个测试拆解并使用机器人框架中的自动变量。在这里找到: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#automatic-variables

关键字

页面/资源文件应具有获取测试名称的负载测试数据关键字,以及设置测试变量,您也可以分配屏幕截图。

*** Keywords ***
Load Test Data
    ${data}    Get File    ${TEST NAME}.txt
    Set Test Variable    ${data}    ${data}
Common Test Teardown
    capture page screenshot    ${data}.png

您的测试应该调用您决定使用的任何测试拆解。

*** Settings ***
Test Setup    Load Test Data
*** Testcases ***
Test Case A
    My keywords
    [Teardown]    Common Test Teardown
调用测试设置

允许您在文件中加载每个测试的名称,如果失败,则会截取屏幕截图,其中包含您在测试设置中加载的测试用例名称。

如果要根据测试用例保存屏幕截图,即。 一个单独的文件夹,用于与每个测试用例相关的所有屏幕截图。然后,您可以使用:

Set Screenshot Directory ./Screenshots/${SUITE NAME}/${TEST NAME}

捕获页面屏幕截图ABC

.png

将在项目根文件夹中创建一个屏幕截图目录,所有屏幕截图将根据测试用例和测试套件存储在不同的文件夹中。

对于单个套件,您可以使用

Set Screenshot Directory         ./Screenshots/${TEST NAME}

最新更新