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

无法从Robot Framework调用Python方法:找不到‘print_something_test’关键字

解决Robot Framework调用Python实例方法的问题

问题核心

你定义的print_something_test是类的实例方法(带self参数),Robot Framework无法直接调用这类方法,必须先实例化对应的类,或者调整方法的定义类型。另外你在Robot关键字里直接写方法名的调用方式不符合规则,导致找不到关键字。

具体解决方案

以下是几种可行的解决方式,根据你的需求选择:

方式1:通过实例化类调用方法

1. 保留原Python方法不变

campaign.py的结构应该是这样(你main方法里能正常调用,说明是实例化后调用的):

class Campaign:
    def print_something_test(self, text):
        print(text)

2. 修改Robot测试用例

在Settings里导入类库,然后创建类实例,再用Call Method调用方法:

*** Settings ***
Library    campaign.Campaign    # 导入Campaign类

*** Test Cases ***
GIVEN Print Something Test Colombo

*** Keywords ***
Print Something Test ${text}
    # 创建Campaign类的实例
    ${campaign_obj}=    Create Instance    campaign.Campaign
    # 调用实例的方法
    Call Method    ${campaign_obj}    print_something_test    ${text}

方式2:把方法改成静态方法(无需实例化)

1. 修改Python方法

给方法加上@staticmethod装饰器,去掉self参数:

class Campaign:
    @staticmethod
    def print_something_test(text):
        print(text)

2. 修改Robot调用

直接通过类名调用静态方法:

*** Settings ***
Library    campaign.Campaign

*** Test Cases ***
GIVEN Print Something Test Colombo

*** Keywords ***
Print Something Test ${text}
    Campaign.print_something_test    ${text}

方式3:将Python方法注册为Robot关键字

1. 修改Python方法

用Robot的@keyword装饰器把方法注册成Robot可直接识别的关键字:

from robot.api.deco import keyword

class Campaign:
    @keyword
    def print_something_test(self, text):
        print(text)

2. 简化Robot调用

导入类库后,直接用注册后的关键字(Robot关键字不区分大小写,空格可替换下划线):

*** Settings ***
Library    campaign.Campaign

*** Test Cases ***
GIVEN Print Something Test Colombo
    # 直接调用注册好的关键字,无需自定义关键字
    Print Something Test    Colombo

额外检查点

  • 确保campaign.py所在目录在Python的sys.path中,或者和测试用例文件同目录,否则导入会失败。
  • 导入类库时,路径要正确:如果是模块里的类,格式是Library 模块名.类名;如果是单独的模块(方法不在类里),直接写Library 模块名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:05:07