2017-06-05 43 views
2

目前我使用Eclipse和Nokia/Red插件,它允許我編寫機器人框架測試套件。支持Python 3.6和Selenium。 我的項目稱爲「自動化」,測試套件位於.robot文件中。 測試套件具有被稱爲「關鍵字」的測試用例。當他們結合Robot框架和Python硒時調試測試用例

測試用例

新建汽車

Create new vehicle with next ${registrationno} and ${description} 
Navigate to data section 

這些 「關鍵詞」 是從Python庫進口的,看起來像:

@keyword("Create new vehicle with next ${registrationno} and ${description}") 
def create_new_vehicle_Simple(self,registrationno, description): 
    headerPage = HeaderPage(TestCaseKeywords.driver) 
    sideBarPage = headerPage.selectDaten() 
    basicVehicleCreation = sideBarPage.createNewVehicle() 
    basicVehicleCreation.setKennzeichen(registrationno) 
    basicVehicleCreation.setBeschreibung(description) 
    TestCaseKeywords.carnumber = basicVehicleCreation.save() 

的問題是,當我運行測試在日誌中,我只能得到這個整個python函數的結果,通過或失敗。我看不出它在哪一步失敗 - 這是第一步還是第二步。

有沒有這種情況下的任何插件或其他解決方案能夠看到哪個確切的Python函數通過或失敗? (當然,解決方法是在TC中爲每個函數使用一個關鍵字,但這不是我想要的)

+0

它的這一方面和其它線程的副本。在提出問題之前,請搜索論壇。 https://stackoverflow.com/questions/43974104/can-robot-framework-keyword-can-be-executed-in-python-console –

+0

這不是同一個問題。如果我在論壇上找到解決方案,爲什麼我會註冊並編寫此問題?在將其標記爲重複之前,請仔細閱讀問題並與其他問題進行比較。再一次,你提到的問題和解決方案對我的問題沒有幫助。 – domoni

+0

所以你說什麼是你接受的這個解決方案是不是你提到的文章中的兩個人提供的相同?在提出問題 –

回答

2

如果您需要「步入」python定義的關鍵字,則需要使用Python調試器和RED一起使用。

這可以用任何python調試器來完成,如果你想在一個應用程序中擁有所有的東西,PyDev可以和RED一起使用。

請按照下面的幫助文檔,如果您遇到任何問題,請在此留言。

RED Debug with PyDev

+0

我已經使用eclipse marketplace安裝了Red。首先關於環境設置:右鍵單擊項目時,我沒有選擇Python Nature。 在該鏈接下描述的所有其他步驟以及最後,我使用新創建的機器人調試配置調試了運行測試套件,但仍獲得相同的日誌/報告,僅詳細介紹了機器人關鍵字,而黑箱介紹了python函數。 我應該在python庫級別運行調試嗎? – domoni

+0

只有在將PyDev安裝到Eclipse中後,Python/PyDev自然纔可用。安裝到RED/Eclipse並關閉你。如果您直接從Eclipse文件夾使用pydevd(pydev debuger),則需要更新腳本中的路徑:https://github.com/nokia/RED/blob/master/src/RobotUserScripts/runPyDevDebug.py第91行 – jozefow

+0

仍然需要在py文件中放置調試斷點,python調試器將提供正在發生的事件的堆棧跟蹤。 – jozefow

2

如果你想知道哪些語句在基於Python關鍵詞失敗了,你只需把它拋出一個適當的錯誤。但是,機器人不會爲你做這件事。從報告的角度來看,基於python的關鍵字是一個黑匣子。您將不得不顯式添加日誌消息,並返回有用的錯誤。

例如,致電sideBarPage.createNewVehicle()應該拋出異常,例如「無法創建新車」。同樣,撥打basicVehicleCreation.setKennzeichen(registrationno)的電話會產生一個錯誤,如「未註冊車輛」。

如果沒有對這些方法的控制,你可以做錯誤的關鍵字中操作:

@keyword("Create new vehicle with next ${registrationno} and ${description}") 
def create_new_vehicle_Simple(self,registrationno, description): 
    headerPage = HeaderPage(TestCaseKeywords.driver) 
    sideBarPage = headerPage.selectDaten() 
    try: 
     basicVehicleCreation = sideBarPage.createNewVehicle() 
    except: 
     raise Exception("unable to create new vehicle") 

    try: 
     basicVehicleCreation.setKennzeichen(registrationno) 
    except: 
     raise exception("unable to register new vehicle") 

    ... 
+0

即使在這種情況下,當我運行我的測試用例時,我將得到關於整個關鍵字ElementNotVisibleException的一般錯誤消息:消息:元素不可見 – domoni

+0

其基於機器人的測試套件,測試和關鍵字,並使用python -m機器人運行 – domoni

+0

@domoni:確保您發出良好的錯誤消息由您決定。機器人框架或python中沒有任何內容會阻止您發出有用的錯誤消息。 –