在Robot Framework测试用例中使用Get Time

时间:2015-10-15 10:01:16

标签: robotframework

如何使用特定时间对于RF.Suppose中的所有测试用例,我必须在UI(用户界面)的某个字段中给出时间。

我必须在当前时间加上所有测试用例的15分钟。如何做到这一点?

我在Resources.txt中声明了全局变量,这是在所有测试用例文件中导入的

${hr}=          Get Time    hour    NOW + 15min
${min}=         Get Time     min    NOW + 15min

当我运行测试用例时,我收到以下错误:

设置变量'$ {hr}'失败:不再可能在Variable表中创建带有列表值的标量变量。创建一个列表变量'@ {hr}'并将其用作标量变量'$ {hr}'。

设置变量'$ {min}'失败:不再可能在Variable表中创建带有列表值的标量变量。创建一个列表变量'@ {min}'并将其用作标量变量'$ {min}'。

但是当我在Test1.txt中使用它时,它们工作正常......

1 个答案:

答案 0 :(得分:1)

如果您使用的代码位于*** Variables ***部分,则格式错误。在变量表中,您无法调用关键字。您正在做的是创建一个名为${hr}的列表,其字面值为["Get Time", "hour", "NOW + 15min"]

来自robot framework user's guide

  

变量最常见的来源是测试用例中的变量表   文件和资源文件。变量表很方便,因为它们   允许在与测试的其余部分相同的位置创建变量   数据,所需的语法非常简单。他们的主要缺点   是值始终是字符串,无法创建它们   动态。

您需要在关键字或测试用例中调用Get Time关键字。由于您希望在启动时执行此操作,因此可以在套件设置中调用该关键字。

*** Keywords ***
initialize timestamp variables
    ${hr}=     Get Time   hour   NOW + 15min
    ${min}=    Get Time   min    NOW + 15min
    set suite variable    ${hr}
    set suite variable    ${min}

*** Settings ***
Suite setup    initialize timestamp varaibles

如果您在多个套件中执行此操作,则完全有可能并非所有套件都使用完全相同的值。另一种解决方案是设置一个全局变量,只设置一次。每个套件都可以检测它是否已经设置,并且只有在尚未设置的情况下才设置它。

您也可以通过基于python的变量文件来完成此操作。

注意:此解决方案仅为当前套件设置变量。如果您在套件初始化文件(例如:mysuite/__init__.robot)中执行此操作,则需要使用Set Global Variable而不是Set Suite Variable。