Robot 的 Telnet 库是如何工作的?
How does Robot's Telnet library work?
我一直在看 Robot 的 Telnet 库(https://github.com/robotframework/robotframework/blob/master/src/robot/libraries/Telnet.py),但我没有在文档中找到这个问题的答案。
我知道 Telnet 对象处理 TelnetConnections 的打开和关闭,并存储当前连接。但是当调用 write 之类的东西时,Robot 怎么知道调用 Telnet._conn.write()?
例如:
Open connection 192.254.64.3
Open connection 192.254.64.4
Write This goes to the second IP
Telnet 库使用一些内省魔法,由 RF 动态库接口支持。
使用Telnet库时,调用get_keyword_names
。这也会检查 TelnetConnection
class 自己的方法并将它们注册为关键字。在执行期间 RF 调用,例如Telnet.write
,由__getattr__
方法处理,进而调用底层TelnetConnection
的对应方法。
整个机制在第 308-240 行中实现。
我一直在看 Robot 的 Telnet 库(https://github.com/robotframework/robotframework/blob/master/src/robot/libraries/Telnet.py),但我没有在文档中找到这个问题的答案。
我知道 Telnet 对象处理 TelnetConnections 的打开和关闭,并存储当前连接。但是当调用 write 之类的东西时,Robot 怎么知道调用 Telnet._conn.write()?
例如:
Open connection 192.254.64.3
Open connection 192.254.64.4
Write This goes to the second IP
Telnet 库使用一些内省魔法,由 RF 动态库接口支持。
使用Telnet库时,调用get_keyword_names
。这也会检查 TelnetConnection
class 自己的方法并将它们注册为关键字。在执行期间 RF 调用,例如Telnet.write
,由__getattr__
方法处理,进而调用底层TelnetConnection
的对应方法。
整个机制在第 308-240 行中实现。