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

Robot Framework中Python对象传递到关键字变为字符串报错求助

问题:Robot Framework中自定义Python对象传递后变为字符串导致属性访问失败

有.NET编程经验,习惯用实体/对象处理数据库操作和API响应,刚接触Python和Robot Framework。在测试中尝试将自定义Person对象从测试用例传递到关键字时,报错:

[FAIL INSIDE] Resolving variable '${person.Id}' failed: AttributeError: 'str' object has no attribute 'Id'

调试发现测试用例中对象仍是Person类型,但传到资源文件后变成了字符串。

相关代码

person.py 文件

from robot.libraries.BuiltIn import BuiltIn

class person(object):
    #ROBOT_LIBRARY_SCOPE = 'GLOBAL'
    
    def __init__(self):
        self.Id='myId'
        self.Name='Jack' 

    def set_id(self, Id):
        self.Id=Id

    def set_name(self, Name):
        self.Name=Name
        return self
    
    def get_a_person(self):
        return self

资源文件(.resource)

*** Settings ***
Resource        
Library         person.py

*** Keywords ***
Get Person Entity
    ${person}     Get A Person
    RETURN     ${person}

Insert person in database     
    [Arguments]     ${person}    
    Execute Sql String    INSERT INTO [Database].[dbo].[Person] (Id,Name) VALUES ('${person.Id}', '${person.Name}');

测试用例文件(.robot)

*** Settings ***
Resource        
Library         person.py

*** Test Cases ***
1. My Example Test
    ${testPerson}    Get Person Entity
    ${testPerson}    Set Name    Adam
    Run Keywords    Insert person in database     person=${testPerson}

解决方案

  • 问题核心:使用Run Keywords传递命名参数时,Robot Framework会默认将对象序列化为字符串,导致类型丢失。
  • 方案1:直接调用关键字
    去掉Run Keywords,直接调用目标关键字,对象类型会被正确保留:
    1. My Example Test
        ${testPerson}    Get Person Entity
        ${testPerson}    Set Name    Adam
        Insert person in database     ${testPerson}
    
  • 方案2:修正Run Keywords的参数写法
    如果必须使用Run Keywords,避免命名参数写法,直接传递变量:
    Run Keywords    Insert person in database    ${testPerson}
    
    若需要传递命名参数,确保使用Robot Framework 3.2+版本,该版本优化了对象类型参数的传递逻辑。
  • 额外优化建议
    • 遵循Python命名规范,将类名改为Person(大驼峰格式)
    • 取消注释ROBOT_LIBRARY_SCOPE = 'GLOBAL',确保库实例全局唯一,避免重复初始化引发的意外问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:33:24