簡體   English   中英

Robot FrameWork:在“設置”中參數化資源路徑時出現問題

[英]Robot FrameWork : Issue when parameterizing Resource path in Settings

Robot Framework-我在設置部分參數化資源路徑時遇到問題。目前,我在selenium項目的文件中有對象存儲庫,並將其保存為ObjectMap.Robot file OR文件放置在project內。 我的目標是將ObjectMap.Robot放置在遠程位置以對其進行訪問。

目前,我已經在ConfigVariables.robot定義了變量

*** Variables ***

${DataFilePath}    /Sample/DataFiles/
${OR_PATH}    \\\\AIX2UB333/Resources/ObjectMap/

$ {OR_PATH}不斷變化為了訪問關鍵字文件中的OR文件,我將設置設置如下。

*** Settings ***

Resource    ../Resources/ConfigurationFiles/ConfigVariables.robot
Resource    ${OR_PATH}/ObjectMap.robot

問題:錯誤顯示為

導入名稱/路徑'$ {OR_PATH} /ObjectMap.robot'已參數化。 一些使用的參數無法解析。 在red.xml中使用變量映射進行參數解析

嘗試添加到red.xml ,錯誤仍然存​​在。 有趣的是,如果我運行測試用例,它將成功運行。 但是在測試用例中,對象圖中使用的變量有一條紅色錯誤線。 每個變量都有錯誤

使用了變量,但未定義。

正如@Bryan Oakley強調的那樣,這不是Robot Framework問題,而是Eclipse RED Robot Framework編輯器中的項目配置問題。

在我看來,就項目變量映射而言,您的設置中的某些內容不正確。 請通過從市場更新日食或從GitHub站點下載最新的日食來確保您擁有最新的RED。 我創建了一個新項目並添加了三個文件

project:
.
├── red.xml
├── OR
|   └── ObjectStore.robot
├── test.robot
└── resource.robot

test.robot

*** Setting ***
Resource    resource.robot
Resource    ${OR}/ObjectStore.robot

*** Test Cases ***

resource.robot

*** Variable ***
${OR}    OR

ObjectStore.robot

[EMPTY]

RED.xml RED.xml變量映射

這樣可以確保在test.robot中沒有顯示錯誤

在此處輸入圖片說明

由於您的對象庫可能會更改,因此我也建議不要將其包括在硬編碼的配置參考中。 而是使用Robot Framework命令行變量的功能來添加變量或引用變量文件,以具有所需的靈活性,而無需在從源代碼存儲庫中獲取文件后修改文件。

我找到了一種針對所問情況的解決方法。 我插入了一個py文件,作為將ObjectMap從遠程計算機復制到本地項目的代碼,該代碼的方法名稱在robot中用作關鍵字並應用於Suite設置。 在機器人中,我還制作了一個標志,只有在條件滿足時才能運行。 如果有人想要在同一台遠程計算機上運行代碼,而該標志將在同一台計算機上創建對象映射的各種副本,則會在becos中添加該標志。

我的PY代碼

'def copy_file_from_source_to_destination(self,src,dst):           
    try:
        shutil.copy2(src, dst)
    except Exception as e:
        return str(e)
    return 'Success'  '

我的機器人關鍵字

'Get Central OR

    ${DESTINATION}=    Catenate    ${EXECDIR}${TARGET_OR} 
    Log    ${DESTINATION}
    ${CALL_STATUS}=    Convert To Uppercase    ${CALL_STATUS}
    Run Keyword If    '${CALL_STATUS}'=='YES'    Copy File From Source To Destination    ${CENTRAL_OR}    ${DESTINATION} 

有點晚了(我肯定在SO上錯過了這個問題),讓我總結一下以上問題。 RED不知道變量的值。 可以在執行期間修改變量(通過testlogic,套件設置,變量文件等),因此RED不能采用Variable部分中的任何值分配來解析參數化路徑。 這同樣適用於系統變量,例如$ {EXECDIR},這些變量可以根據您從何處開始執行機器人以及如何構造機器人命令而更改。

在另一種情況下,CI作業根據輸入參數(例如,要使用Robot測試的軟件的版本或類型)修改路徑中的變量,以使用僅對該版本或軟件有效的適當庫或資源。 如果沒有VM機制,測試人員將不得不使用參數化的導入來臨時更改套件以直接引導路徑,以便能夠使用正確的導入(諾基亞中的實際情況以及red.xml中使用VM的原因)。

因此,對於路徑中具有變量的任何導入,RED假定USER必須指定在編輯階段要使用的臨時有效值。

這是在red.xml中使用變量映射的原因-允許指定變量的值,以便可以解析任何路徑,從而允許導入文件。

RED幫助(在應用程序和github中)中還有一個條目: http : //nokia.github.io/RED/help/user_guide/working_with_RED/variable_mapping.html

關於“項目/工作區外部的某些東西”的警告-警告,可以幫助您理解為什么從其他計算機上的存儲庫中檢出測試時,測試不起作用。 可以在Windows->首選項->機器人框架->錯誤/警告幫助主題中更改任何錯誤/警告: http : //nokia.github.io/RED/help/user_guide/validation/validation_preferences.html

如果您有任何疑問或問題,請在RED GitHub項目的問題跟蹤器上創建這些問題: https : //github.com/nokia/RED/issues

紅色下午

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM