首页 > 其他 > 详细

RF框架基础知识(二)

时间:2019-02-25 20:43:25      阅读:348      评论:0      收藏:0      [点我收藏+]


•    工程结构
•     Project工程
•     TestSuite测试套件
•     TestCase测试案例
•    Resource资源文件
•     Settings设置项-导入加载资源
•     ExternalResource外部资源
•    常量和变量
•    Keyword关键字
•    循环&分支
•    RF内置测试库
 
工程结构

技术分享图片

 

Settings设置项
•    DefaultTags用于指定 测试用例的标签.
•    Library  引入的各种依赖包
   eg:Library      JdbutilLibrary
•    Resource  各种依赖文件
   注意路径结构:Resource     ../../values/test/urlconf.robot
•    Setup  在测试用例之前执行
•    TestTemplate用于指定 测试模板.测试用例本身将只包含数据,每行数据都是传递给该关键字的参数,最终实现数据驱动的测试
 
常量与变量
•    常量
      环境变量(统一用标识符”%”来使用)
      数值常量(例如数值2.6,可以写成${2.6})
      特殊字符常量(${/},${:},${False},${None},${SPACE}等)

•    变量介绍:
    Robot Framework 的变量分为 标量, 列表 和 字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义。
•    变量赋值 ----变量定义区域:变量区,case区域
${service}    SetVariable    rpmBindCardInit
•    取关键字返回值作为变量值
${request_time}   sendPost.Get Time Stamp
${RESPONSE}    DO SOMETHING    ${PARAMS}
或:
${RESPONSE}=    DOSOMETHING    ${PARAMS}
•    列表变量赋值
           @{NAMES}        Matti       Teppo
           @{NAMES2}       @{NAMES}    Seppo
           @{NOTHING}
           @{MANY}         one         two      three     four
...             five        six     seven
•     获取列表项
           使用下标语法 @{NAME}[index] 可以获取到列表变量中指定项的值, 其中 index 是要获取的项的下标. 下标从0开始, 负数的下标等同于从列表末尾向前数. 下标长度超过列表范围会导致错误.eg.@{USER}[0]
           也可以使用For循环遍历列表
•    字典声明
           &{USER1} name=Matti address=xxx phone=123
           &{USER2} name=Teppo address=yyy phone=456
           &{MANY}first=1 second=${2} ${3}=third
           &{EVENMORE} &{MANY} first=override empty=
... =empty key\=here=value
•    获取字典值
          可以通过 &{NAME}[key] 这样的语法格式获取字典中某项的值, 其中 key 是键的名称. 键名当作字符串处理, 非字符串的键可以用变量代替. 通过这种方式获取到的值可作为标量变量使用.
         当字典被当作列表迭代时, 实际返回的值是字典的键. 例如, @{MANY} 变量的值是 [‘first‘, ‘second‘, 3].
 
Keywords
基准库中的关键字:log、定义变量:Set variable、连接对象:Catenate、定义列表:Create List、设置休眠时间:sleep等。
自定义关键字:
•     GetPay Password
       ${cipher}Password PayEncrypt   ${S_KEY}     ${USER_PASSWORD_PAY}
      [Return]    ${cipher}
•     GETNOW TIME S
       ${timestamp}   JdbutilLibrary.Get Timestamp    s
       [Return]    ${timestamp}
•     GETNOW TIME MS
•          ${timestampms}   JdbutilLibrary.Get Timestamp    ms

循环和分支
•    runkeyword if分支
run keyword if     ${timeLimited}
    ...    client http post  ${USER2.session}    /mybankv21/phptradeui/extendterm/add data=${submitData}   expect=1
    ...    ELSE
•    For循环:
•     在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环结构体内的每一行,使用\ 作为改行的行首关键字
    [Arguments]   @{users}
    : FOR    ${user}    IN   @{users}
    \    User Login    ${user}
 
RF内置测试库
•    Builtin: Robot Framework 标准类库,提供常用的关键字,例如:log
•    Convert:转换-eg:类型转换、大小写转换
•    Verify:Fail,停止当前Case
•    Variables:${service}    Set Variable    rpmBindCardInit
•    RunKeyword:Run Keyword If Test Failed
•    Evaluate:随机数、随机字符串、字符串处理、日期处理等
•     ${str}    Evaluate   String.ascii_uppercase    string
•    Collections(List、Dictionary)
•     ${commitData}    Create Dictionary
•     ...    comp_jdbid=11111
•    DateTime、File、path等等
 
 PythonRequests-发送请求
•   Get方法:requests.get(url+uri+‘?‘+res,cookies=cookie,headers=header)
•    Post方法:r = requests.post(url+uri,cookies=cookie,data=data)
•    不需要cookie信息: req = request.Request(url+uri, data=data)

结果查看及问题定位
•    通过DEBUG打断点调试,在Message Log窗口中查看日志;
•    通过console控制台打开report.html或log.html查看详细信息;
  
debug

技术分享图片

 

常见问题
•    引用方法后,进行导包,ctrl+1;
•    空格不符合规范会报错,建议直接使用Tab键;
•    所需关键字没有被封装,自己完成python方法实现,然后引用;

RF框架基础知识(二)

原文:https://www.cnblogs.com/yinwenbin/p/10433028.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!