目录
yaml support function variables
yaml support function variables
API test过程中, 我们经常遇到
- 发送请求前先获取token
- 参数随机产生
- 密码进行加密
yaml文件中设置变量, 只要使用robot 相应的关键字保存变量, 然后直接调用变量即可. 我们不需要额外处理yaml中的变量使用.
下面我们来看看如何在yaml中使用function, 通过配置相应的参数, 获取函数的返回值并保存到robot的变量中, 以便于后续的相关变量使用.
本文要达到的目的:
- 获取函数的返回值
- 保存到suite variable中
- 最后显示variable的值
1. yaml 函数配置示例
steps:
-
keyword: set_suite_variable
args:
- ${testvar}
- ${svar}
type: setup
run_func:
-
name: simple_function_with_param
args:
- 123
-
- True
saved_var_names:
-
name: ${fvar}
dpath: "0"
-
name: ${svar}
dpath: "1/name"
-
name: ${tvar}
dpath: "2"
# type: set_global_variable, set_suite_variable, set_varibale, set_test_variable
type: set_suite_variable
2. create step 函数修改
steps中如果配置了run_func字段, 那么将执行函数
def create_step(suite_test, obj):
for step in obj:
kw_name = step.get('keyword')
kw_args = step.get('args')
kw_type = step.get('type')
b_func = step.get('run_func')
if b_func:
run_function(suite_test, b_func, kw_name, kw_args, kw_type)
else:
create_test_keyword(suite_test, kw_name, kw_args, kw_type)
3. 增加函数运行的关键字
主要流程如下:
- 解析yaml配置的函数参数
- 获取函数返回值
- 将返回值保存到suite variable中
@keyword
def simple_function_with_param(data, index=2, flag=False):
logger.info("{}:{}:{}".format(data, index, flag))
response = ['123',
{
'test': 'simple test',
'name': 'simple name'
},
'simple msg'
]
logger.info(response)
return response
@keyword
def run_function_keyword(step_functions, kw_name, kw_args):
'''
run functions which also as keywords
set return value as robot variable
saved varibale type only support: global, suite, test, common varibale
'''
for func in step_functions:
name = func.get('name')
args = func.get('args')
save_var_type = func.get('type')
save_var_names = func.get('saved_var_names')
bi = BuiltIn()
results = bi.run_keyword(name, *args)
logger.info("the receive: {}".format(save_var_names))
logger.info("the return value: {}".format(results))
for index, item in enumerate(save_var_names):
name = item.get('name')
_dpath = item.get('dpath')
# 根据路径获取value
value = foreach(results, _dpath)
if value:
args = [name, value]
bi.run_keyword(save_var_type, *args)
# bi.log_variables()
bi.run_keyword(kw_name, *kw_args)
4. 运行
python run.py
==============================================================================
Activate Variable
==============================================================================
Should Activate Skynet | PASS |
------------------------------------------------------------------------------
simple show Variable | PASS |
------------------------------------------------------------------------------
Activate Variable | PASS |
2 critical tests, 2 passed, 0 failed
2 tests total, 2 passed, 0 failed
==============================================================================
Output: C:\make_your_rest_api_wth_robot\Day8\src\reports\skynet-output.xml
总结
本文介绍了yaml文件中函数的简单配置, 可以根据自己的喜好更改函数的配置方式.
公众号回复: robotapi, 获取该教程的完整脚本
扫码关注公众号: 风起帆扬了
来一起学习,成长,分享
航行在测试的大道上
喜欢就点赞吧