创建RobotFramework可使用的自定义Library(一)

本文介绍了一种在RobotFramework中创建自定义库的方法,通过继承DynamicCore并使用@keyword装饰器,可以定义并调用自建类中的方法。

RobotFramework中创建自定义Library的方法 (一)

看到网上的RobotFramework使用大多是借助Selenium库来进行测试,但由于工作需求要使用串口连接以及定制协议的方式执行自动化测试,找了半天没有很好的第三方库,因此自定义功能库来执行测试。
下面介绍一种方式使得自建方法得以在RF中被调用。

借鉴Selenium库的编写方法:

使用Selenium类似的方式创建自定义库需要注意几点:
1. 库的名称与初始化类的名称相同
2. 初始化类继承DynamicCore
3. 引入keyword方法

详细内容如下:

from base import DynamicCore


class TestLibrary(DynamicCore):

    ROBOT_LIBRARY_SCOPE = "GLOBAL"
    #指定库为全局使用
    def __init__(self):
        libraries = [
            Connect(self),
        ]
        # 1.将需要的自建类放入到library中,自建类当中需要使用@keyword来将方法放入列表中
        DynamicCore.__init__(self, libraries)
        # 2.此处的初始化使得在library中定义的类的方法被添加到字典中,后续得以被调用

对于注释1,在library中添加TestConnect类中的方法构造详见如下:

from base import keyword

class TestConnect:
    # 在需要使用的方法前添加修饰器@keyword,目的是为了让RF知道方法的名称和标签
    @keyword
    def connect(self, connect_way):
        self.serialobject.Open()

其中robot中keyword方法的详细实现如下,作用是将对应的方法在RF中创建相应的名称和标签说明:

def keyword(name=None, tags=()):
    """Decorator to set custom keyword names and tags to functions and methods.

    This decorator creates the ``robot_name`` and ``robot_tags`` attributes on
    the decorated keyword method or function.  Robot Framework checks them to
    determine the keyword's name and tags, respectively.

    library.py::

        @keyword(name='Login Via User Panel')
        def login(username, password):
            # ...

        @keyword(name='Logout Via User Panel', tags=['example', 'tags'])
        def logout():
            # ...

    tests.robot::

        Login Via User Panel    myusername    mypassword

    If ``name`` is not given, the actual name of the keyword will not be
    affected, but the ``robot_name`` attribute will still be created.
    This can be useful for marking methods as keywords in a dynamic library.
    In this usage it is possible to also omit parenthesis when using the
    decorator::

        @keyword
        def func():
            # ...
    """
    if callable(name):
        return keyword()(name)
    def decorator(func):
        func.robot_name = name
        func.robot_tags = tags
        return func
    return decorator

对于注释2,在TestLibrary初始化后,调用DynamicCore的init,DynamicCore是HybirdCore的子类,此处的初始化使得在library中定义的类名称和对应的实例化方法对象被添加到字典中,详见如下:

class HybridCore(object):

    def __init__(self, library_components):
        self.keywords = {}
        self.attributes = {}
        self.add_library_components(library_components)
        self.add_library_components([self])

其中add_library_components的方法就是将类方法的名称和对应的实例化方法对象放入到字典中,返回的self.keywords中内容如下:

{'connect': <bound method TestConnect.connect of <SerialDevice.Test_Connect.Connect object at 0x00000000030DE6A0>>}

可见,在调用connect的名称时,即调用对应的connect方法。
通过这种方式构建自己需要的方法,并在初始化时加入到library中,就可以创建出自己想要的库了。

使用上述的方法构建自己定义的库,可以被RF识别并使用,可以使用RIDE或RED等各种工具尝试,查看自己的关键字是否已经被识别。
导入库的方法网上都有很多介绍,在此就不再复述了,希望上述内容能对你有所帮助。

内容概要:本文档为陈南男的个人简历,详细介绍了其教育背景、实习经历、项目经验及专业技能。她目前为中国科学院大学计算机应用技术专业硕士在读,曾就读于哈尔滨工程大学计算机科学与技术专业,综合成绩位列前5%。实习期间,她在百度担任AI应用开发工程师,参与构建基于文心言API的智能教育平台,实现个性化学习路径生成;在九坤投资参与开发多云资源管理平台,完成前后端系统设计与云资源集成;目前在阿里巴巴从事AI Agent研发,聚焦跨境电商SKU级资产治理,设计并优化Badcase诊断Agent,显著提升诊断效率与准确率。此外,她还主导开发了电商视频生成平台“山竹旺影”,通过Agent工作流降低用户使用门槛。其技术能力涵盖大模型应用、Prompt Engineering、AI Agent设计、全栈开发等。; 适合人群:计算机相关专业在校生、应届毕业生及从事AI开发、全栈开发的技术人员。; 使用场景及目标:①了解AI Agent在实际业务中的落地应用,如教育、电商、云运维等场景;②学习如何结合大模型与工程架构实现复杂系统的设计与优化;③参考高水平技术人才的成长路径与项目实践经验。; 阅读建议:此简历内容详实、项目含金量高,建议开发者重点关注其AI Agent设计思路、技术实现细节以及跨系统集成能力,借鉴其在复杂业务链路中解决问题的方法论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值