2015-10-15 32 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與該版本兼容..是否有任何解決舊版本.. –

相關問題