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运行原理解析插件