• RF框架基础知识(二)



    •    工程结构
    •     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}    Set Variable    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方法实现,然后引用;

    测试进阶轨迹
  • 相关阅读:
    bzoj2124-等差子序列
    线程安全问题
    IDEA导入maven中导入net.sf.json报错的解决方法
    Java写到.txt文件,如何实现换行
    POI读取Excel如何判断行为空
    为什么JAVA对象需要实现序列化?
    支付宝老版本的支付文档
    连接池和数据源的区别是什么 [
    文件下载时格式设置
    postConstruct执行过程
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/10433028.html
Copyright © 2020-2023  润新知