python代码与robotframwork代码之间的转化

robot开发者注意

 robot测试用例开发时,IF 条件语句,则需要 手动添加断言逻辑(比如通过 Fail 关键字主动报错)。这是因为 IF 本身只是一个条件分支,不会自动生成测试结果。

数据类型

python

示例

# 定义不同类型的数据
data_list = [
    42,                  # 整数
    3.14,                # 浮点数
    "Hello, world!",     # 字符串
    True,                # 布尔值
    [1, 2, 3],           # 列表
    (4, 5, 6),           # 元组
    {"name": "Alice", "age": 25},  # 字典
    {7, 8, 9}            # 集合
]

# 遍历数据列表并打印数据及其类型
for data in data_list:
    print(f"数据: {data}, 类型: {type(data)}")
执行结果
数据: 42, 类型: <class 'int'>
数据: 3.14, 类型: <class 'float'>
数据: Hello, world!, 类型: <class 'str'>
数据: True, 类型: <class 'bool'>
数据: [1, 2, 3], 类型: <class 'list'>
数据: (4, 5, 6), 类型: <class 'tuple'>
数据: {'name': 'Alice', 'age': 25}, 类型: <class 'dict'>
数据: {8, 9, 7}, 类型: <class 'set'>

robot

Robot Framework 中,变量可以通过不同方式创建:

  • Set Variable:直接设置字符串变量。

  • Evaluate:执行 Python 表达式,确保变量符合 Python 原生类型。

  • Create List:创建一个列表(Robot Framework 原生支持列表)。

  • Create Dictionary:创建一个 Robot Framework 专属的字典类型(DotDict)

  • modules=__main__:用于 Evaluate 关键字,保证 Python 数据类型正确解析,而不是转换成字符串。

  • Convert To 系列(强制类型转换),关键字Convert To IntegerConvert To NumberConvert To String 等,用途:显式转换变量类型(尤其是从字符串转换)。

示例

*** Settings ***
Library    BuiltIn

*** Test Cases ***
打印各种类型数据及其类型
    # 使用 Evaluate 定义整数
    ${int_value}    Evaluate    42
    # 使用 Convert To Integer 定义整数
    ${int_value2}    Convert To Integer    42

    ${float_value}    Evaluate    3.14
    ${string_value}    Set Variable    Hello, world!
    ${bool_value}    Evaluate    True
    ${list_value}    Create List    1    2    3
    ${tuple_value}    Evaluate    (4, 5, 6)    modules=__main__
    ${dict_value}    Evaluate    {"name": "Alice", "age": 25}    modules=__main__
    ${set_value}    Evaluate    {7, 8, 9}    modules=__main__

    Log To Console    数据: ${int_value}, 类型: ${int_value.__class__}
    Log To Console    数据: ${int_value2}, 类型: ${int_value2.__class__}
    Log To Console    数据: ${float_value}, 类型: ${float_value.__class__}
    Log To Console    数据: ${string_value}, 类型: ${string_value.__class__}
    Log To Console    数据: ${bool_value}, 类型: ${bool_value.__class__}
    Log To Console    数据: ${list_value}, 类型: ${list_value.__class__}
    Log To Console    数据: ${tuple_value}, 类型: ${tuple_value.__class__}
    Log To Console    数据: ${dict_value}, 类型: ${dict_value.__class__}
    Log To Console    数据: ${set_value}, 类型: ${set_value.__class__}

 执行结果

==============================================================================
Test                                                                          
==============================================================================
打印各种类型数据及其类型                                              .数据: 42, 类型: <class 'int'>
.数据: 42, 类型: <class 'int'>
.数据: 3.14, 类型: <class 'float'>
.数据: Hello, world!, 类型: <class 'str'>
.数据: True, 类型: <class 'bool'>
.数据: ['1', '2', '3'], 类型: <class 'list'>
.数据: (4, 5, 6), 类型: <class 'tuple'>
.数据: {'name': 'Alice', 'age': 25}, 类型: <class 'dict'>
打印各种类型数据及其类型                                              .数据: {8, 9, 7}, 类型: <class 'set'>
打印各种类型数据及其类型                                              | PASS |
------------------------------------------------------------------------------
Test                                                                  | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Output:  E:\web_work\python_work_space\robots\output.xml
Log:     E:\web_work\python_work_space\robots\log.html
Report:  E:\web_work\python_work_space\robots\report.html

注意点

1,不要使用Set Variable去定义数字和浮点数;Create Dictionary:创建一个 Robot Framework 专属的字典类型(DotDict)
 示例
*** Settings ***
Library    BuiltIn

*** Test Cases ***
打印各种类型数据及其类型
    ${int_value}    Set Variable    42
    ${float_value}    Set Variable    3.14
    &{dict_value}    Create Dictionary    name=Alice    age=25

    Log To Console    数据: ${int_value}, 类型: ${int_value.__class__}
    Log To Console    数据: ${float_value}, 类型: ${float_value.__class__}
    Log To Console    数据: ${dict_value}, 类型: ${dict_value.__class__}
执行结果
==============================================================================
Test2                                                                         
==============================================================================
打印各种类型数据及其类型                                              ...数据: 42, 类型: <class 'str'>
.数据: 3.14, 类型: <class 'str'>
.数据: {'name': 'Alice', 'age': '25'}, 类型: <class 'robot.utils.dotdict.DotDict'>
打印各种类型数据及其类型                                              | PASS |
------------------------------------------------------------------------------
Test2                                                                 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Output:  E:\web_work\python_work_space\robots\output.xml
Log:     E:\web_work\python_work_space\robots\log.html
Report:  E:\web_work\python_work_space\robots\report.html

Robot Framework 中,变量默认是字符串类型,除非显式创建列表、字典等数据结构。所以,你看到的 DotDict 是 Robot Framework 用于处理字典的特殊数据结构,而其他变量默认以字符串形式存储。

Create Dictionary 返回的是 DotDict(Robot Framework 自己的字典类型),但它仍然是字典类型,可以正常使用。

2, set_value 需要 Evaluate,因为 Robot Framework 原生不支持集合
3, tuple_value 也是通过 Evaluate 关键字创建的 Python 元组

变量定义扩展

 我们可以在*** Variables ***定义全局变量,但是需要注意的是在 *** Variables *** 部分,你可以 直接定义字符串、列表和字典,但 无法定义整数、浮点数、布尔值、元组或集合

 Robot Framework 的变量默认是 字符串类型,而 列表和字典 是 Robot Framework 内部支持的数据结构。但其他类型(如 intfloatbooltupleset)必须通过 Evaluate 关键字 进行转换。

扩展示例(*** Variables ***定义全局变量)
*** Settings ***
Library    BuiltIn

*** Variables ***
${int_value}    42
${float_value}    3.14
${str_value}    Hello, Robot Framework!
${bool_value}    ${True}
@{list_value}    苹果    香蕉    橙子    葡萄
${tuple_value}    Evaluate    (1, 2, 3, 4)    modules=__main__
&{dict_value}    name=Alice    age=25
${set_value}    Evaluate    {7, 8, 9}    modules=__main__

*** Test Cases ***
打印变量及其类型
    Log To Console    整数: ${int_value}, 类型: ${int_value.__class__}
    Log To Console    浮点数: ${float_value}, 类型: ${float_value.__class__}
    Log To Console    字符串: ${str_value}, 类型: ${str_value.__class__}
    Log To Console    布尔值: ${bool_value}, 类型: ${bool_value.__class__}
    Log To Console    列表: ${list_value}, 类型: ${list_value.__class__}
    Log To Console    元组: ${tuple_value}, 类型: ${tuple_value.__class__}
    Log To Console    字典: ${dict_value}, 类型: ${dict_value.__class__}
    Log To Console    集合: ${set_value}, 类型: ${set_value.__class__}
执行结果
==============================================================================
Test2                                                                         
==============================================================================
打印各种变量                                                          整数: 42
.浮点数: 3.14
.字符串: Hello, Robot Framework!
.布尔值: True
.列表: ['苹果', '香蕉', '橙子', '葡萄']
.字典: {'name': 'Alice', 'age': '25'}
打印各种变量                                                          | PASS |
------------------------------------------------------------------------------
Test2                                                                 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Output:  E:\web_work\python_work_space\robots\output.xml
Log:     E:\web_work\python_work_space\robots\log.html
Report:  E:\web_work\python_work_space\robots\report.html

(venv) E:\web_work\python_work_space\robots>robot test2.robot
==============================================================================
Test2                                                                         
==============================================================================
打印变量及其类型                                                      整数: 42, 类型: <class 'str'>
.浮点数: 3.14, 类型: <class 'str'>
.字符串: Hello, Robot Framework!, 类型: <class 'str'>
.布尔值: True, 类型: <class 'bool'>
.列表: ['苹果', '香蕉', '橙子', '葡萄'], 类型: <class 'list'>
.元组: Evaluate (1, 2, 3, 4) modules=__main__, 类型: <class 'str'>
.字典: {'name': 'Alice', 'age': '25'}, 类型: <class 'robot.utils.dotdict.DotDict'>
.集合: Evaluate {7, 8, 9} modules=__main__, 类型: <class 'str'>
打印变量及其类型                                                      | PASS |
------------------------------------------------------------------------------
Test2                                                                 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Output:  E:\web_work\python_work_space\robots\output.xml
Log:     E:\web_work\python_work_space\robots\log.html
Report:  E:\web_work\python_work_space\robots\report.html

常用数据类型的转换 

python

示例

def convert_data_types():
    # 原始数据
    int_value = 42
    float_value = 3.14
    str_value = "123"
    bool_value = True
    list_value = [1, 2, 3]
    tuple_value = (4, 5, 6)
    dict_value = {"name": "Alice", "age": 25}
    set_value = {7, 8, 9}

    # 转换数据类型
    print(f"整数转字符串: {str(int_value)} (类型: {type(str(int_value))})")
    print(f"浮点数转整数: {int(float_value)} (类型: {type(int(float_value))})")
    print(f"浮点数转字符串: {str(float_value)} (类型: {type(str(float_value))})")
    print(f"字符串转整数: {int(str_value)} (类型: {type(int(str_value))})")
    print(f"布尔值转整数: {int(bool_value)} (类型: {type(int(bool_value))})")
    print(f"列表转元组: {tuple(list_value)} (类型: {type(tuple(list_value))})")
    print(f"元组转列表: {list(tuple_value)} (类型: {type(list(tuple_value))})")
    print(f"字典的键转换为列表: {list(dict_value.keys())} (类型: {type(list(dict_value.keys()))})")
    print(f"字典的值转换为列表: {list(dict_value.values())} (类型: {type(list(dict_value.values()))})")
    print(f"集合转列表: {list(set_value)} (类型: {type(list(set_value))})")
    print(f"列表转集合: {set(list_value)} (类型: {type(set(list_value))})")

    # 特殊转换
    print(f"字符串转浮点数: {float(str_value)} (类型: {type(float(str_value))})")
    print(f"整数转布尔值: {bool(int_value)} (类型: {type(bool(int_value))})")
    print(f"空列表转布尔值: {bool([])} (类型: {type(bool([]))})")

# 执行转换函数
convert_data_types()
执行结果
整数转字符串: 42 (类型: <class 'str'>)
浮点数转整数: 3 (类型: <class 'int'>)
浮点数转字符串: 3.14 (类型: <class 'str'>)
字符串转整数: 123 (类型: <class 'int'>)
布尔值转整数: 1 (类型: <class 'int'>)
列表转元组: (1, 2, 3) (类型: <class 'tuple'>)
元组转列表: [4, 5, 6] (类型: <class 'list'>)
字典的键转换为列表: ['name', 'age'] (类型: <class 'list'>)
字典的值转换为列表: ['Alice', 25] (类型: <class 'list'>)
集合转列表: [8, 9, 7] (类型: <class 'list'>)
列表转集合: {1, 2, 3} (类型: <class 'set'>)
字符串转浮点数: 123.0 (类型: <class 'float'>)
整数转布尔值: True (类型: <class 'bool'>)
空列表转布尔值: False (类型: <class 'bool'>)

robot 

示例 

*** Settings ***
Library    BuiltIn

*** Test Cases ***
打印各种类型数据及其类型
    ${int_value}    Evaluate    42
    ${float_value}    Evaluate    3.14
    ${str_value}    Set Variable    123
    ${bool_value}    Evaluate    True
    @{list_value}    Create List    1    2    3
    ${tuple_value}    Evaluate    (4, 5, 6)    modules=__main__
    ${dict_value}    Evaluate    {"name": "Alice", "age": 25}    modules=__main__
    ${set_value}    Evaluate    {7, 8, 9}    modules=__main__

    # 数据类型转换
    ${int_to_str}    Evaluate    str(${int_value})    modules=__main__
    ${float_to_int}    Evaluate    int(${float_value})    modules=__main__
    ${float_to_str}    Evaluate    str(${float_value})    modules=__main__
    ${str_to_int}    Evaluate    int(${str_value})    modules=__main__
    ${bool_to_int}    Evaluate    int(${bool_value})    modules=__main__
    ${list_to_tuple}    Evaluate    tuple(${list_value})    modules=__main__
    ${tuple_to_list}    Evaluate    list(${tuple_value})    modules=__main__
    ${dict_keys_to_list}    Evaluate    list(${dict_value}.keys())    modules=__main__
    ${dict_values_to_list}    Evaluate    list(${dict_value}.values())    modules=__main__
    ${set_to_list}    Evaluate    list(${set_value})    modules=__main__
    ${list_to_set}    Evaluate    set(${list_value})    modules=__main__

    # 特殊转换
    ${str_to_float}    Evaluate    float(${str_value})    modules=__main__
    ${int_to_bool}    Evaluate    bool(${int_value})    modules=__main__
    ${empty_list_to_bool}    Evaluate    bool([])    modules=__main__

    # 打印结果
    Log To Console    整数转字符串: ${int_to_str}, 类型: ${int_to_str.__class__}
    Log To Console    浮点数转整数: ${float_to_int}, 类型: ${float_to_int.__class__}
    Log To Console    浮点数转字符串: ${float_to_str}, 类型: ${float_to_str.__class__}
    Log To Console    字符串转整数: ${str_to_int}, 类型: ${str_to_int.__class__}
    Log To Console    布尔值转整数: ${bool_to_int}, 类型: ${bool_to_int.__class__}
    Log To Console    列表转元组: ${list_to_tuple}, 类型: ${list_to_tuple.__class__}
    Log To Console    元组转列表: ${tuple_to_list}, 类型: ${tuple_to_list.__class__}
    Log To Console    字典的键转换为列表: ${dict_keys_to_list}, 类型: ${dict_keys_to_list.__class__}
    Log To Console    字典的值转换为列表: ${dict_values_to_list}, 类型: ${dict_values_to_list.__class__}
    Log To Console    集合转列表: ${set_to_list}, 类型: ${set_to_list.__class__}
    Log To Console    列表转集合: ${list_to_set}, 类型: ${list_to_set.__class__}
    Log To Console    字符串转浮点数: ${str_to_float}, 类型: ${str_to_float.__class__}
    Log To Console    整数转布尔值: ${int_to_bool}, 类型: ${int_to_bool.__class__}
    Log To Console    空列表转布尔值: ${empty_list_to_bool}, 类型: ${empty_list_to_bool.__class__}

执行结果 

================================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值