2015-06-08 74 views
1

我一直在看一下Robot的Telnet庫(https://github.com/robotframework/robotframework/blob/master/src/robot/libraries/Telnet.py),我還沒有在這個問題的文檔中找到答案。機器人的Telnet庫如何工作?

我得到Telnet對象處理TelnetConnections的打開和關閉,並存儲當前連接。但是,如果寫入某些東西被調用,Robot如何知道調用Telnet._conn.write()?

例如:

Open connection 192.254.64.3 
Open connection 192.254.64.4 
Write   This goes to the second IP 

回答

1

的Telnet庫使用一些內省魔法,通過RF動態庫的接口的支持。

當Telnet庫被投入使用時,調用get_keyword_names。這也檢查它自己的方法TelnetConnection類,並將它們註冊爲關鍵字。在執行RF呼叫時,例如Telnet.write,該方法由__getattr__方法處理,該方法依次調用底層TelnetConnection的相應方法。

這整個機制在308-240行中實現。

+0

啊,謝謝!我忘記了__getattr __()返回了函數對象,而不僅僅是名稱。 –