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

时间:2019-01-09 15:25:38

标签: selenium robotframework

我想知道是否有可能实现以下目标。假设我在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位
  • geckodriver最新的64位

3 个答案:

答案 0 :(得分:4)

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

SeleniumLibrary Capture Page Screenshot的文档显示,您可以给它一个文件名作为第一个参数。

将这两个放在一起,您可以执行以下操作:

Capture page screenshot  ${TEST NAME}.png

答案 1 :(得分:3)

我要解决的方法是创建一个测试拆解并使用机器人框架中的自动变量。在这里找到: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

调用测试设置可让您在文件中加载每个测试的名称,如果失败则在拆解中将截取屏幕快照,其中包含您在测试设置中加载的测试用例名称。

答案 2 :(得分:0)

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

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

捕获页面截图ABC.png

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

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

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