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 Integer、Convert To Number、Convert 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 内部支持的数据结构。但其他类型(如 int、float、bool、tuple、set)必须通过 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__}
执行结果
================================================================

最低0.47元/天 解锁文章
2939

被折叠的 条评论
为什么被折叠?



