当前位置:网站首页>RobotFramework 之 用户关键字

RobotFramework 之 用户关键字

2022-08-09 13:06:00 沉觞流年

用户关键字(user keyword)
按系统业务操作,调用系统关键字和变量形成更高级的关键字。
类似于RF层面的函数,用于封装一些步骤。类比python编写自己的函数。

定义用户关键字是为了封装用例中相同逻辑的内容,达到优化用例的作用

用户关键字RF标识

  • 参数:[Arguments]
  • 返回值 :[Return]
  • 关键字说明:[Documentation]

用户关键字定义在Keywords中,只要在测试用例中调用用户关键字的名称,即可调用用户关键字里的步骤

用户关键字的调用

示例:

*** Keywords ***
关键字1
	[Documentation]		关键字1说明:操作步骤1、操作步骤2
	log to console    操作步骤1
	log to console    操作步骤2

*** Test Cases ***

用例1
    关键字1
    log to console    操作步骤3

用例2
	关键字1
	log to console    操作步骤4

执行该robot文件,用例中直接调用了关键字1里的操作步骤。[Documentation] 后的内容不起任何作用,只是进行说明,相当于注释

用例1                                                                 操作步骤1
操作步骤1
.操作步骤3
用例1                                                                 | PASS |
------------------------------------------------------------------------------
用例2                                                                 操作步骤1
操作步骤1
.操作步骤4
用例2                                                                 | PASS |

带参用户关键字

*** Keywords ***

带参关键字
	[Arguments]    ${
    date}
	log to console    今天是${
    date}

*** Test Cases ***

用例1
    带参关键字	2021-03-30

通过 [Arguments] 定义参数 ${date}用例1 中使用 带参关键字,然后将参数 2021-03-30 传递过去,执行了 log to console打印

==============================================================================
用例1                                                                 今天是2021-03-30
用例1                                                                 | PASS |
------------------------------------------------------------------------------
带参用户关键字-默认参数
*** Keywords ***

带参关键字-默认参数
	[Arguments]    ${
    ToDo}=浇花
	log to console      早上起来记得${
    ToDo}

*** Test Cases ***

用例2
    带参关键字-默认参数
    带参关键字-默认参数      喝豆浆

通过 [Arguments] 定义参数 ${ToDo}用例2 中使用 带参关键字-默认参数
如果没有传入参数,则会调用默认参数 浇花
如果传入了参数,则将参数 喝豆浆 传递过去,执行了 log to console打印

==============================================================================
用例2                                                                 早上起来记得浇花
.早上起来记得喝豆浆
用例2                                                                 | PASS |
------------------------------------------------------------------------------

带参用户关键字-多个参数
*** Keywords ***

带参关键字-多个参数
	[Arguments]    @{
    name}
	log to console      今天要和@{
    name}一起打牌

*** Test Cases ***

用例3
    带参关键字-多个参数      王总  李总  张总

通过 [Arguments] 定义参数 @{name}(注意这里的符号是@),用例3 中使用 带参关键字-多个参数
将参数 王总 李总 张总 传递过去,执行了 log to console打印,但这里参数传递的方式是以列表的方式

==============================================================================
用例3                                                                 今天要和['王总', '李总', '张总']一起打牌
用例3                                                                 | PASS |
带参用户关键字-键值对参数
*** Keywords ***

带参关键字-键值对参数
	[Arguments]    &{
    persons}
	log to console        王总的爱好:${
    persons}[王总]

*** Test Cases ***

用例4

    带参关键字-键值对参数      王总=打高尔夫球    李总=SPA    张总=打麻将

通过 [Arguments] 定义参数 &{persons}(注意这里的符号是&),用例4 中使用 带参关键字-键值对参数
将参数 王总=打高尔夫球 李总=SPA 张总=打麻将 传递过去,执行了 log to console打印,但这里参数传递的方式是以字典的方式

==============================================================================
用例4                                                                 王总的爱好:打高尔夫球
用例4                                                                 | PASS |
------------------------------------------------------------------------------

如果需要用到key-value形式的内容,且需要通过循环获取字典里的内容,推荐通过python语法自定义关键字实现。通过RF方式不推荐使用,容易报错

带参用户关键字-返回值

这里需要用到Dialogs库里的get value from user关键字。
定义用户关键字带参关键字-返回值,获取从弹框中输入的分数,如果分数大于60,则通过关键字 set variable if通过赋值给变量res;如果分数小于等于60,则将不通过赋值给变量res。最后通过[Return]返回到用例中的result变量

*** Settings ***
Library    Dialogs

*** Keywords ***
带参关键字-返回值
	${
    score}    get value from user    请输入你的分数
	${
    res}  set variable if    int($score)>60   通过
	...  int($score)<=60        不通过
	[Return]    ${
    res}

*** Test Cases ***

用例5
	${
    result}      带参关键字-返回值
	log to console    ${
    result}

输入30

==============================================================================
用例5                                                                 .不通过
用例5                                                                 | PASS |
------------------------------------------------------------------------------
Test1                                                                 | PASS |
1 test, 1 passed, 0 failed
==============================================================================
原网站

版权声明
本文为[沉觞流年]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44614026/article/details/115338102