2015-10-15 162 views
1

如何使用特定的时间对于RF中的所有测试用例。假设我必须在UI(用户界面)的某个字段中给出时间。在Robot Framework中使用获取时间测试用例

我必须将所有测试案例中的当前时间加上15分钟..如何完成这项工作?

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

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

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

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

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

但是,当我用同样的个Test1.txt他们的工作很好..

回答

1

如果您正在使用的代码是在*** Variables ***部分,其格式是错误的。在变量表中,您不能调用关键字。你在做什么是创建一个与["Get Time", "hour", "NOW + 15min"]

文本值从robot framework user's guide命名${hr}列表:

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

您需要在关键字或测试用例中调用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。

+0

感谢您的建议......实际上,当我们进行套件设置时,我们通常在__init __。robot文件中声明它们?如果是这样,在__init__文件中声明的变量不能直接在测试用例中使用..如何处理该..我试着上述解决方案..创建一个__init __。机器人文件,如果我尝试直接使用变量,我越来越一个错误..请让我知道如何共享变量从测试套件到较低的测试案例..谢谢.. –

+0

@svsteja:如果你把它放在init文件中,你需要使用'set global variable'而不是'set套件变量“。从机器人2.9开始,您可以使用'set suite variable'选项'children = true'。 –

+0

上午使用旧版本的RF 2.8.x版本...由于Java中的selenium2Library与该版本兼容..是否有任何解决旧版本.. –

相关问题