RF中的关键字可以理解为类“函数”的机制,可分为系统关键字和用户关键字。
1)系统关键字通过脚本开发相应的类和方法,从而实现某一逻辑功能。
2)根据业务的需求利用现有的系统关键字或自定义的关键字,把多个重复的步骤集合在一起组成用户关键字。
用户关键字一般存放在资源文件中。
RF关键字同python中函数的机制一样,支持不带参数,带参数,带返回值几种形式的关键字。
用户关键字的设置有
● Documentation:文档;
● Arguments:关键字的传入参数;
● Teardown:和Case的类似,设置关键字执行完成时的动作;
● Timeout:和Case的类似,运行超时的时间设置;● Return Value:返回值。
关键字 Arguments
不带参数
单击应用中心菜单
Click Element locator
带参数
切换iframe
[Arguments] ${locator}
Select Frame ${locator}
带默认参数
打开浏览器
[Arguments] ${url} ${browser}=chrome
Open Browser ${url} ${browser}
关键字 [Teardown]
用户关键字中进行后置操作
关键字 RETURN
假设我们有一个关键字,名为Calculate Sum
,这个关键字的功能是接收两个数字作为参数,计算它们的和,然后返回结果。
首先,在Robot Framework的.robot
文件中定义这个关键字:
*** Keywords ***
Calculate Sum
[Arguments] ${num1} ${num2}
${sum}= Set Variable ${num1} + ${num2}
[Return] ${sum}
在这个例子中,[Arguments]
用于定义关键字的输入参数,${num1}
和${num2}
是传入的两个数字。Set Variable
关键字用于计算这两个数字的和,并将结果存储在${sum}
变量中。最后,[Return]
语句用于返回这个计算结果。
接下来,在测试用例中调用这个关键字,并处理返回的结果:
*** Test Cases ***
Sum Test
${result}= Calculate Sum 10 20
Log The sum is: ${result}
在这个测试用例中,Calculate Sum
关键字被调用,并传入10和20作为参数。关键字执行后返回的结果被存储在${result}
变量中。然后,使用Log
关键字将结果打印到日志中。
执行这个测试用例时,你会在日志中看到类似这样的输出:
The sum is: 30
这表明Calculate Sum
关键字成功执行,并返回了正确的结果。通过RETURN语句,我们实现了关键字间的数据传递,使得测试更加灵活和模块化。
请注意,RETURN语句只返回关键字的结果,并不会结束整个测试用例的执行。测试用例会继续执行后续的步骤,直到所有步骤都完成。
py文件定义关键字
在Robot Framework(RF)中,关键字(Keywords)通常用于定义测试用例中的可重用步骤。虽然Robot Framework本身并不直接支持在关键字定义中直接传递列表作为参数(因为它使用空格分隔的语法),但你可以通过几种方法间接地实现这一功能。
以下是一些方法,你可以使用它们来在Robot Framework的关键字中传递类似列表的数据:
方法 1:使用分隔符分割字符串
你可以在关键字中接收一个由特定分隔符(如逗号)分隔的字符串,然后在关键字内部将其分割为列表。
关键字定义(Python):
from robot.api import logger
from robot.libraries.BuiltIn import BuiltIn
def my_keyword(items_str, delimiter=','):
items = items_str.split(delimiter)
for item in items:
logger.info(f"Processing item: {item}")
Robot Framework测试用例:
*** Settings ***
Library my_library.py
*** Test Cases ***
Example Test
My Keyword item1,item2,item3
方法 2:使用字典或JSON字符串
如果你的数据结构更复杂,你可能希望使用字典或JSON字符串。然后,你可以在关键字内部使用Python的json
模块来解析它。
关键字定义(Python):
import json
from robot.api import logger
def my_keyword(json_str):
try:
data = json.loads(json_str)
for key, value in data.items():
logger.info(f"Processing {key}: {value}")
except json.JSONDecodeError as e:
logger.error(f"Invalid JSON: {e}")
Robot Framework测试用例:
*** Settings ***
Library my_library.py
*** Test Cases ***
Example Test
My Keyword '{"item1": "value1", "item2": "value2"}'
方法 3:使用变量文件或环境变量
对于更复杂的数据集,你可能希望使用变量文件(如YAML或JSON文件)或环境变量来存储数据,并在测试用例中引用它们。然后,你可以在关键字中读取这些文件或变量。
方法 4:使用自定义库和类
你还可以创建一个自定义的Python库和类,该类具有用于处理列表数据的方法。然后,你可以在Robot Framework测试用例中实例化该类并调用其方法。这种方法提供了更大的灵活性和控制力。