如何使用特定时间对于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中使用它时,它们工作正常......
答案 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。