Skip to main content
robot中访问者模式

robot中访问者模式

一、访问者模式

在看robotframework源码中总是发现有visit这个单词,而且在整个运行中都是反复出现,所以自己就看了下关于这个访问者的设计模式。其实这个设计模式是非常少见的,我们平时使用中也并不常见,但是既然robot中出现了这个我们就来看一下这个设计模式。因为懂了这个设计模式也会更加方便我们看源码。

访问者模式(Visitor Pattern)是一种行为型设计模式,它能够将算法与对象结构分离,使得算法可以独立于对象结构而变化
该模式的核心概念是,定义一个访问者对象,它是对某个对象结构中各个元素的操作,这种操作可以改变元素的类或状态。
其工作原理是,访问者模式通过定义访问者接口和被访问者接口,将遍历和操作分离开来,从而提高代码的可维护性和可扩展性。


Y-aong...About 3 min源码分析设计模式robotframework源码分析robotframework访问者模式
关键字驱动的思路

关键字驱动的思路

robotframework是一个以关键字驱动的测试框架,我也在编写一个工作流的框架,其中也会用到动态生成关键字方面的需求。我觉得robot中关键字比较好用,是值得我来借鉴的地方,所以我想学习下robot 关键字相关的实现方式。

一、获取关键字

  • KeywordCreator使用library和name创建所用的关键字,并保存到keywords列表中
    • 具体实现需要KeywordCreator调用create方法,这里返回的是关键字library,关键字名称,参数,文档和tag的集合
      • create方法又是使用LibraryKeyword来进行创建的
      • DynamicKeyword作为LibraryKeyword的子类其中一个重要的属性method,这个method实际上就是一个可执行的对象
      • 这个method就是KeywordCreator调用create的返回值

Y-aong...About 5 min源码分析robotframework源码分析robotframework
robot的运行流程

robot的运行流程

一、RobotFrameWork类构造

class Application:

    def __init__(self, usage, name=None, version=None, arg_limits=None, env_options=None, logger=None, **auto_options):
        self._ap = ArgumentParser(usage, name, version, arg_limits, self.validate, env_options, **auto_options)
        self._logger = logger or DefaultLogger()


class RobotFramework(Application):
    def __init__(self):
        super().__init__(USAGE, arg_limits=(1,), env_options='ROBOT_OPTIONS', logger=LOGGER)


Y-aong...About 2 min源码分析robotframework源码分析robotframework