Day 8--robot api with yaml: yaml文件配置函数

目录

 

yaml support function variables

1. yaml 函数配置示例

2. create step 函数修改

3. 增加函数运行的关键字

4. 运行

总结


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, 获取该教程的完整脚本

                                                              扫码关注公众号

                                                                    扫码关注公众号: 风起帆扬了
                                                                        来一起学习,成长,分享
                                                                          航行在测试的大道上
                                                                               喜欢就点赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值