5.0 Robot Framework 框架学习

测试框架共同点:

  • 手工编写用例+测试数据
  • 手工运行用例 — > 自由运行用例
  • 肉眼全程观察运行过程—>自动记录运行过程
  • 肉眼校验结果 — > 自动校验测试结果
  • 手工编写测试报告—> 自动生成测试报告 (查看测试报告,分析测试报告,反馈bug,优化脚本)

Robot Framework 框架学习

一、 RF特点:
  • 开源、基于python语言
  • 丰富的第三方库: UI , API, Android, iOS
  • 测试用例支持: txt\tsv、html等格式编写
  • 关键字驱动,用已有关键字形成业务关键字
  • 测试用例支持变量使用、IF语句和FOR循环
  • 支持继承svn、git、jekins等工具
  • 灵活、可扩展
  • 丰富的编辑工具
    Robot Framework 学习地址: https://robotframework.org/ ---->Library
二、 Robot Framework四大常用使用模块介绍
1. *** Test Cases ***    用例模块
2. *** Keywords ***  关键字  
3. *** Settings *** 库导入模块
4. *** Variables ***     变量

关键字存放在:
资源文件中(资源文件名.robot / 资源文件名.resource)
资源文件的导入: 在用例套件中, Settingsm模块导入,导入格式: Resource 资源文件名.后缀

三、 Robot framework 变量定义、调用
  • 变量定义
    ${} – 纯量 。代表一个值
    @{} – 列表 。 N个值(列表)
    &{} – 字典, key-value

  • 变量赋值:
    接收关键字调用后的返回值
    通过关键字来赋值: ${} – set variable
    @{} – create list
    &{} – Create Dictionary

  • 变量调用:
    ${} 直接调用,无论变量是纯量,字典还是列表类型,调用时,需要转化为纯量
    列表元素访问: ${list[0]}
    字典key对应value值访问: ${dict.key} 或者 d i c t [ ′ k e y 值 ′ ] ( k e y 如 果 字 符 串 , {dict['key值']} (key如果字符串, dict[key]key{dict[‘key值’]},否则,则 ${dict[key]} 即可访问)

  • 变量的作用域:
    1. 用例中定义的变量则只作用于该用例
    2. robot用例套件文件里边 Variables中的变量,只作用于该用例套件
    3. 如果用例中对变量设置了: set suite variable 变量名,那么该变量也可以在该套件其他用例中使用
    我们也可以将变量定义到py文件中,使用时,直接引用就好了
    引用在套件文件中的Settings中引入py,然后再调用变量:
    Variables.py 内容如下:
    username = “Lujier”
    pwd = “123123”
    list1 = [‘中国建设银行’, ‘中国银行’, ‘浦发银行’, ‘陕西信合’]
    dict1 = {“name”: “Lujier”, “pwd”: “123123”}

      """字典变量,robot套件在引用py模块变量时,语法跟robot原来不一样
      比如: 测试套件在使用,robot中的字典的key对应的value获取时,格式是: ${dict1.key}  ---》 遵循robot语法
                          py文件中的字典时,却需要: ${dict1[key]} ----》遵循python语法
      那么,怎样才可以让py变量也可以像robot中的变量一样,使用robot语法来访问呢?
          在列表前面加上: LIST__
          在字典前边加上:  DICT__
          被调用时
      """
      LIST__list002 = [1, 3, 6, 8]
      DICT__dict002 = {"name": "Lujier", "age": "18 forever"}
    

    测试套件robot内容:
    *** Settings ***
    Variables variables.py # 引入变量文件,相对路径即可

      *** Test Cases ***
      test_001
          LOG TO CONSOLE   ${username}
      
      test002
          LOG TO CONSOLE    ${list1}
      
      test003
          LOG TO CONSOLE  ${dict1}
      
      test004
         [Documentation]    读取列表局部值
         LOG TO CONSOLE    ${list1[0]}
      
      test005
         [Documentation]    读取字典局部值(与python读取一样,不能用robot读取robot变量的方式)
         LOG TO CONSOLE    ${dict1["name"]}
      
      test006
         [Documentation]   LIST__ 或则 DICT__变量可以按照robot语法来使用变量
         LOG TO CONSOLE   ${dict002.name}
         LOG TO CONSOLE   ${list002[0]}
    
四、 常见关键字:
  • FOR循环遍历
    举例:
    列表for循环遍历
    @{list1}= Create List a b c
    :FOR ${i} IN @{list1} # For循环遍历
    \ LOG TO CONSOLE i   e x i t f o r l o o p i f " {i} \ exit for loop if " i exitforloopif"{i}" == “b” # 条件满足,跳出循环

     列表for循环遍历_下标
         @{list1}=   Create List   a   b   c
         ${len} =    get length     ${list1}   # 获取列表长度
         :FOR   ${index}   IN RANGE  ${len}    # For循环遍历
         \  LOG TO CONSOLE   ${list1[${index}]}
    
  • if 判断 RUN KEYWORD IF
    *** Test Cases ***
    Test title
    ${datas} set variable 88
    RUN KEYWORD IF d a t a s = = 0 L O G T O C O N S O L E 竟 然 是 0... E L S E I F 0 < {datas}==0 LOG TO CONSOLE 竟然是0 ... ELSE IF 0< datas==0LOGTOCONSOLE0...ELSEIF0<{datas}<60 LOG TO CONSOLE 竟然不及格
    … ELSE log to console 及格了

  • 异常
    *** Test Cases ***
    用例异常关键字使用
    ${passed}= run keyword and return status addnums 100 300
    RUN KEYWORD IF ${passed} LOG TO CONSOLE 成功
    … ELSE log to console 失败

    用例异常关键字使用2
       ${passed}=   run keyword and return status   addnums    100  300  400
       RUN KEYWORD IF   ${passed}   LOG TO CONSOLE   成功
       ...  ELSE   log to console   失败
    
    *** Keywords ***
    addnums
        [Documentation]  加法函数定义
        [Arguments]   ${a}=1    ${b}=2   # 函数参数,默认值
        Log  ${a}+${b}
        ${sum}=   Evaluate  ${a}+${b}
        # ${sum}=   Evaluate  $a+$b
        [Return]   ${sum}
        # [Return]   $sum
    
五、 robot 自动化
 Web UI 自动化: SeleniumLibrary
       pip install --upgrade robotframework-seleniumlibrary
 App UI 自动化: AppiumLibrary
       pip install robotframework-appiumlibrary
 接口自动化: RequestsLibrary
          pip install -U requests
          pip install -U robotframework-requests
 以 Web自动化为例:
  • Selenium库引入:
    用例文件Settings引入: Library SeleniumLibrary
  • 常见关键字
    在RF中,seleniumlibrary的元素定位方式和selenium保持一致
    表达式2种:
    定位类型:定位表达式 ,如 id:hello
    定位类型=定位表达式
    如果是css定位,需要在定位前面加上: css=
  • 等待:
    只需要在会话启动的时候设置
    等待元素可见: Wait Until Element is Visible
    等待元素出现: Wait Until Page Contains Element
1. Robot_Web自动化思想:
  1) PO分层思想,
  2) 用到知识: Library、Keyword、Resource、TestCase/TestSuite
             Settings - 引入库、引入资源|变量文件、前置后置
  3) 用例管理
      . 自动加载用例--- 需要告知robot,在那个目录(工程目录)下去收集用例
      . 默认报告 --- 默认存放在所在的目录
  
  报告是否可指定路径?  可以
  用例是否可筛选?   可以打标记:
        用例标记:用例内部[Tags]
        类标记: Settings中:Force Tags 强制标签
                           Default Tags 默认标签
  
  4) 用例运行,可以在console控制台:  
    . 运行所有用例: robot  项目路径 
       一般建议,进入到该项目目录下,在使用: robot  用例目录 来运行用例,此时报告就会默认显示在该项目下
    .  运行指定标签的用例: robot -i 标签名  项目路径/用例路径
        如: robot -i smoke   python_robot_20190919_20190921
    .  用例执行结果(报告、日志等文件)指定位置
        robot -i 标签名 -d   存放报告路径   项目路径/用例路径
        如: robot -d  python_robot_20190919_0921/OutPuts  python_robot_20190919_20190921
    .  运行指定测试套件:  
        robot -s  套件名称/路径  项目路径/用例路径
    .   接收robot命令行所传的参数
         robot -i -标签  -v  变量名:变量值
         如:  robot 文件内容
              *** Test Cases ***
              get_cmd_key_and_value
                  [Documentation]  获取运行命令中传的参数
                   [Tags]  global_value
                    LOG     ${browser_type}
           那么robot命令就是:robot -i  global_value -v  
           browser_type:chrome  name:Lujier -d  python_robot_20190919_0921/OutPuts  python_robot_20190919_20190921
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值