RobotFramework基础

RF接口自动化简介

整体内容

•    工程结构

•     Project工程

•     TestSuite测试套件

•     TestCase测试案例

•    Resource资源文件

•     Settings设置项-导入加载资源

•     ExternalResource外部资源

•    常量和变量

•    Keyword关键字

•    循环&分支

•    RF内置测试库

 

工程结构

Settings设置项

•    DefaultTags用于指定 测试用例的标签.

•    Library  引入的各种依赖包

   egLibrary      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:类型转换、大小写转换

•    VerifyFail,停止当前Case

•    Variables${service}    Set Variable    rpmBindCardInit

•    RunKeywordRun Keyword If Test Failed

•    Evaluate:随机数、随机字符串、字符串处理、日期处理等

•     ${str}    Evaluate   String.ascii_uppercase    string

•    CollectionsListDictionary

•     ${commitData}    Create Dictionary

•     ...    comp_jdbid=11111

•    DateTimeFilepath等等

 

 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.htmllog.html查看详细信息;

  

debug

常见问题

    引用方法后,进行导包,ctrl+1

•    空格不符合规范会报错,建议直接使用Tab键;

•    所需关键字没有被封装,自己完成python方法实现,然后引用;

 

 



猜你喜欢

转载自blog.csdn.net/zhengshengnan123/article/details/80234685