天天看點

robot framework 自定義關鍵字詳細過程及debug

在學習RF自定義關鍵字的時候,網上看到有些不夠詳細,最重要的是沒有debug過程,這篇記錄下自己在寫關鍵字時候的除錯過程。

1:

在C:\Python27\Lib\site-packages\ 檔案夾下, 建立python package檔案夾 ,例如我的是ATestLibrary 

建好後的完整路徑:C:\Python27\Lib\site-packages\ATestLibrary\

(Tips:我的python 是安裝在C槽,在建立時,要根據自己的安裝路徑選擇)

2:

在C:\Python27\Lib\site-packages\ATestLibrary\ 檔案夾下檢視是否有__init__.py 檔案,若沒有建立__init__.py(空内容檔案)。 

建好後的完整路徑:C:\Python27\Lib\site-packages\ATestLibrary\__init__.py

3:

在C:\Python27\Lib\site-packages\ATestLibrary\ 檔案夾下,建立自己的moudle,例如我的是test_RF_import.py

代碼demo:

test_RF_import.py

class myKeyWords(object):
    def __init__(self):
        pass

    def my_key_word(self):
        print ('this is my key word')
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4:

C:\Python27\Lib\site-packages\ATestLibrary\__init__.py 修改該檔案内容為

__init__.py

# -*- coding: utf-8 -*-
from test_RF_import import myKeyWords

class ATestLibrary(myKeyWords):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
           
  • 1
  • 2
  • 3
  • 4
  • 5
# 特别注意:
在__init__.py檔案中,建立class 時,類名必須和自己的庫檔案夾名稱相同。
例如我的類名稱是ATestLibrary,而建立的庫檔案夾名也是ATestLibrary→C:\Python27\Lib\sitepackages\ATestLibrary 
           
  • 1
  • 2
  • 3
  • 4

5:

在robotframework 中,點選Library 導入自定義庫 

導入自定義庫檔案ATestLibrary,正确時為灰色字型(導入庫檔案,就不需要說明了) 

運作結果:

Starting test: BetaInterfaceTest xiewm.Testcase.Test My Key Word.test_my_key_word
 :: :  INFO : this is my key word
Ending test:   BetaInterfaceTest xiewm.Testcase.Test My Key Word.test_my_key_word
           
  • 1
  • 2
  • 3

完整的檔案結構應該是這樣: 

ATestLibrary 

——- __init__.py 

——- test_RF_import.py

以下自己遇到的一些問題的debug 

1:盡量在檔案的開頭加上:# -- coding: utf-8 --,因為python預設編碼是ascii,是以如果代碼中有(),或中文等等符号,會報錯,提示編碼不正确

2:如果寫的代碼裡邊有中文,盡量在檔案開頭加上以下3行代碼

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
           
  • 1
  • 2
  • 3

3:如果在初始化函數中,定義了形參。則必須在導入庫的時候,也要提供對應的參數。 

不然會提示少給了變量的報錯。

def __init__(self,a,b):
    pass
           
  • 1
  • 2
robot framework 自定義關鍵字詳細過程及debug

4: 

修改代碼後,及時把對應的.pyc檔案删除并且重新開機下robotframework 後,再導入。

5:如果還是有其他的報錯,請點選Tools→View RIDE log ,檢視并debug。

繼續閱讀