rebotframework与BuiltIn

本文介绍了Robot Framework中BuiltIn库中常用的几个关键字,包括Log用于打印消息级别,Library导入库,SetVariable和SetSuiteVariable设置变量,Catenate拼接字符串,以及CreateDictionary和CreateList数据结构操作。这些关键字是进行自动化测试的基础工具。

讲述BuiltIn中常用关键字
什么是BuiltIn ?
BuiltIn是robot framework的标准库,提供了最通用和最常用的关键字,使用时会自动导入,下面我们只介绍使用频率较多的一些关键字,如果用到了其它关键字时,去官网查看相关的用法即可,文档的官网:http://robotframework.org/robotframework/#user-guide

1.Log/Log Many

作用:打印信息,能够设置打印的级别

语法:

Name: Log
Source: BuiltIn
Arguments:
[ message | level=INFO| html=False| console=False| repr=str| formatter=str]

参数说明:

l message :要打印的信息

l level:消息的级别,支持TRACE, DEBUG, INFO (默认), HTML, WARN和ERROR。如果是WARN和ERROR级别的信息,在命令行下是可见的

l html:表示打印的是HTML语法的消息

l console:为true的话表示log文件中记录的信息也会在命令行打印一遍

l formatter:用来控制字符串输出的个格式,包括str (默认), repr and ascii,和python中的类似

l repr:和formatter作用类似,即将被废弃的参数,repr=True等价于 formatter=repr

示例:

@@@Test Cases @@@
Example
Log Hello, world! # Normal INFO message.
Log Warning, world! WARN # Warning.
Log Hello, world! html=yes # INFO message as HTML.
Log Hello, world! HTML # Same as above.
Log Hello, world! DEBUG html=true # DEBUG as HTML.
Log Hello, console! console=yes # Log also to the console.
Log Null is \x00 formatter=repr # Log ‘Null is \x00’.
执行结果:

Log Many:和Log类似,只是能同时打印多个信息

示例:

@@@Test Cases @@@
Log Many Example
@{list} = Create List 1 2 3
&{dict} = Create Dictionary key=value foo=bar
Log Many Hello robot
Log Many @{list} &{dict}

执行结果:

robot -t Log_Many_Example log.robot

注意:命令行下指定用例名用-t参数,如果用例名有空格,那么输入的时候用下划线_代替否则会按参数去解析执行

2.Library

作用:导入指定的库,就可以使用库中的关键字

语法:

Name:Import Library
Source:BuiltIn
Arguments:[ name | *args ]
示例:

@@@Settings @@@
Library AppiumLibrary

3.Set Variable

作用:给一个变量赋值

语法:

Name:Set Variable
Source:BuiltIn
Arguments:[ *values ]
示例:

@@@Test Cases @@@
Example
# 将字符串赋值给一个变量
${hi} = Set Variable Hello, world!

将变量赋值给变量

${hi2} = Set Variable I said: ${hi}

同时给2个变量赋值

${var1} ${var2} = Set Variable Hello world

给一个列表变量赋值

@{list} = Set Variable 1 2 3 4

将数字赋值给变量

${item1} ${item2} = Set Variable 1 2
执行结果:

4.Set Suite Variable

作用:定义一个suite级别的变量,在当前测试套件内均是可用的。如果定义的变量和变量表一致的话,就会发生变量覆盖。suite级别的变量在子suite默认是不可见的,如果想在子suite中使用的话就用children=true作为Set Suite Variable最后一个参数即可。

语法:

Name:Set Suite Variable
Source:BuiltIn
Arguments:[ name | *values ]
示例:

@@@Test Cases @@@
Example2
# 定义一个suite级别字符串变量${SCALAR}
Set Suite Variable KaTeX parse error: Expected 'EOF', got '#' at position 31: …lo, world! #̲ 重新给变量{SCALAR}赋值
Set Suite Variable KaTeX parse error: Expected 'EOF', got '#' at position 48: …ldren=true #̲ 定义一个suite级别列表变…{LIST}
Set Suite Variable @{LIST} First item Second item
# 定义一个suite级别字典变量KaTeX parse error: Expected 'EOF', got '&' at position 34: …te Variable &̲{DICT} key=v…{DICT}值赋给${ID}
KaTeX parse error: Expected 'EOF', got '&' at position 33: …iable Value &̲{DICT} # 将{ID}设置为suite级别的变量
Set Suite Variable ${ID}

Example3
# 直接使用Example2定义的uite级别的变量
Log Many &{DICT}
执行结果:

5.Catenate

作用:将给定的数据拼接,以字符串的形式返回。默认情况下用空格连接,如果想改变连接符的话,需要在调用此关键字时通过第一个参数SEPARATOR=指定分割符

语法:

Name:Catenate
Source:BuiltIn
Arguments:[ *items ],可变参数
示例:

@@@Test Cases @@@
Example
${str1} = Catenate Hello world #空格
${str2} = Catenate SEPARATOR=— Hello world #—
${str3} = Catenate SEPARATOR= Hello world #无分隔符
log ${str1} console=yes
log ${str2} console=yes
log ${str3} console=yes
执行结果:

6.Create Dictionary

作用:生成一个字典,和Python中的类似

语法:

Name: Create Dictionary
Source: BuiltIn
Arguments: [ *items ]
如果想要转换成Python的字典可以使用Collections库中的Convert To Dictionary方法

示例1:Create Dictionary创建字典的几种方式

@@@Test Cases @@@
Example1
# 方式一:key=value syntax
&{dict} = Create Dictionary key=value foo=bar
Should Be True ${dict} == {‘key’: ‘value’, ‘foo’: ‘bar’}
# 方式二:separate key and value
&{dict2} = Create Dictionary key value foo bar
Should Be Equal ${dict} ${dict2}
# 方式三:使用变量
&{dict} = Create Dictionary 1={1}=1={2} &{dict} foo=new
Should Be True ${dict} == {1: 2, ‘key’: ‘value’, ‘foo’: ‘new’}
# 通过点访问字典的key
Should Be Equal ${dict.key} value # dot-access
说明:

  1. 用key=value的形式生成的字典和key:value的形式是等价的;

  2. 用key=value的形式生成字典还可以分别列出key,value也可以生成字典,见方式二

  3. 可以通过.访问字典中的key

  4. 等号=可以没有

执行结果:

示例2:Create Dictionary创建的字典和Variables定义的是等价的

@@@Variables @@@
&{d} key=value foo=bar #定义一个字典变量

@@@Test Cases @@@
Example2
Log Many &{d}
&{dict} = Create Dictionary key=value foo=bar
Should Be Equal ${dict} ${d}
执行结果:

7.Create List

作用:生成一个列表,和Python中的类似

语法:

Name: Create List
Source: BuiltIn
Arguments: [ *items ]
参数可以是变量类似${1}这种形式

示例1:Create List创建列表的几种方式

@@@Test Cases @@@
Example
# 创建好的列表赋值给列表变量
@{list} Create List a b c
# 创建好的列表赋值给标量
${scalar} Create List a b c
Log Many @{list}
Log Many ${scalar}
# 通过变量创建列表
${ints} Create List ${1} ${2} ${3}
Log Many ${ints}
执行结果:

说明:

  1. Create List生成的列表可以赋值个另一个列表,也可以赋值给一个标量,但是并不是一个字典,而是作为一个字符串整体;

  2. 参数可以是数字变量

### Python `__builtin__` 模块的功能使用 #### 1. 基本概念 `__builtin__` 是 Python 的一个特殊模块,在 Python 2 中存在,而在 Python 3 中被重命名为 `builtins`。它包含了所有的内置对象,包括函数、异常和其他核心组件。通过访问该模块,可以查看或修改这些内置对象的行为。 当运行程序时,`__builtins__` 实际上是一个指向 `__builtin__` 或 `builtins` 模块的对象[^1]。这意味着可以通过 `__builtins__` 访问到所有默认可用的内置名称空间。 #### 2. 主要功能 以下是 `__builtin__`/`builtins` 模块的主要功能: - **提供内置函数和常量** 包括但不限于以下常用内置函数:`abs()`、`all()`、`any()`、`bin()`、`bool()`、`bytearray()` 等。还提供了特殊的内置常量如 `None` 和 `True`/`False`[^2]。 - **支持动态导入和模块操作** 提供了一些用于模块管理的工具,例如: - `dir()`: 返回指定对象的所有属性和方法列表。 - `globals()`: 获取当前全局命名空间中的变量字典。 - `locals()`: 获取当前局部命名空间中的变量字典。 - `import()`: 动态导入模块。 - `reload()`: 在某些情况下重新加载已导入的模块(仅适用于特定版本)[^2]。 - **调试用途** 可以利用此模块来探索不同类型的对象及其内部结构。例如,下面的例子展示了如何获取不同类型的数据成员列表[^3]: ```python import sys def dump(value): print(f"{value} => {dir(value)}") dump([]) # 列表类型 dump({}) # 字典类型 dump('string') # 字符串类型 dump(len) # 函数类型 dump(sys) # 模块类型 ``` #### 3. 修改内置行为 虽然不推荐更改内置对象的行为,但在某些高级场景下可能需要这样做。例如,可以通过覆盖 `open` 来实现自定义文件打开逻辑: ```python def custom_open(*args, **kwargs): print("Custom open called!") return original_open(*args, **kwargs) original_open = __builtins__.open __builtins__.open = custom_open with open('test.txt', 'w') as f: pass # 输出 Custom open called! ``` 需要注意的是,这种做法可能会引发不可预见的问题,因此应谨慎处理[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值