You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Robot Framework中共享__init__.robot的库初始化状态给测试用例?

复用Robot Framework Suite级库实例的解决方案

核心结论

只要库的ROBOT_LIBRARY_SCOPE设为'SUITE',整个测试套件内只会存在一个库实例。问题出在测试用例文件中重复导入库的操作,触发了新的初始化。正确做法是复用已创建的实例,无需重复导入。


具体实现步骤

1. 在套件初始化文件中完成库导入与全局变量设置

在__init__.robot中只需导入一次库,通过Suite Setup捕获UUID并设置为套件全局变量:

*** Settings ***
Library    DemoLibrary
Suite Setup    Capture Suite UUID

*** Keywords ***
Capture Suite UUID
    ${suite_uuid}=    Get UUID
    Set Suite Variable    ${GLOBAL_UUID}    ${suite_uuid}

2. 测试用例文件直接使用库关键字,无需重复导入

在a_test.robot中不要添加Library DemoLibrary,直接调用库的关键字即可自动复用Suite级实例:

*** Test Cases ***
Verify UUID Consistency
    ${test_uuid}=    Get UUID
    Should Be Equal    ${test_uuid}    ${GLOBAL_UUID}

3. 需直接操作库实例时,用Get Library Instance获取

如果需要调用库的Python方法或访问属性,通过Get Library Instance获取已存在的实例,而非重新导入:

*** Test Cases ***
Access Library Instance Directly
    ${lib_instance}=    Get Library Instance    DemoLibrary
    ${test_uuid}=    Call Method    ${lib_instance}    get_uuid  # 对应Python库中的get_uuid方法
    Should Be Equal    ${test_uuid}    ${GLOBAL_UUID}

常见误区解析

  • 重复导入库:即使库的scope是Suite,在测试文件中再次执行Library导入语句,会强制创建新实例,导致UUID不一致。
  • 错误使用WITH NAME:如果在__init__.robot中用了Library DemoLibrary WITH NAME MyLib,后续获取实例时必须指定MyLib作为Get Library Instance的参数,否则会找不到原有实例。

内容的提问来源于stack exchange,提问作者nine9ths

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:42:14