Robotframework運行原理解析

用到的知識:
SocketServer模塊的socket編程
threading模塊的多線程編程
robotframework執行時能夠添加監聽器監聽腳本的運行編程

具體流程
1.在Ride加載控制執行的插件的時候,會開啓一個守護線程,這個線程開啓了一個監聽器服務,這個監聽器後期會用來得到robotframework發送過來的結果json

2.在Ride點擊run的時候,作了下面幾件事:多線程

生成robotframework要執行的腳本命令,在這個命令中附加了一個監聽器,監聽robotframework的運行,此時監聽器已經得到了前面ride啓動的監聽器的端口號,以及是否在用例失敗的時候再也不執行的參數。因爲在同一個機器上面,地址統一是localhost

  執行腳本開始運行,這時附加在這個腳本上listerner,它也開啓了一個服務,這個服務用來接收指令用的,是一個Debugger服務,能夠經過給這個服務接收指令,讓腳本暫停,或者一步步的執行。另外值得一提的就是因爲是ride開啓腳本運行的,所以ride天然知道了Debugger服務的端口號了,以及它的pid,這樣才能給它發信,而且終止它的運行

3.腳本執行的listener,會把全部的運行信息已json格式的方式,發送給ride的監聽服務,ride接收到腳本運行的信息後,將其添加到運行面板上,這就是爲啥能夠同步看到腳本運行的信息的緣由了socket

4.Debugger服務收到指令後,它會經過Theading模塊Event.set()方法,激活或者讓其餘線程等待運行,這樣即達到了控制運行的目的,而
具體控制的狀態由監聽器它內部的一個變量斷定。ide

整個過程的通信都是經過socket完成的,爲啥不用指定端口號,是由於端口由系統來決定即設置端口號爲0
Robotframework運行原理解析插件

相關文章
相關標籤/搜索