zoukankan      html  css  js  c++  java
  • RF学习笔记

    RF即robotframework,接口、web UI、app自动化都可以支持。文本形式编写测试用例(填表格),不是python语言(使用RF要遵循它自己的语法)。

    关键字:都是函数

    一、RF的几大概念

    1、Settings:设置项,包括导入库、导入变量,设置变量、设置setup、teardown等。

      用法示例:

          *** Settings ***

          Library DateTime     导入DateTime

          Resource keywords.robot     导入用户自定义关键字集

          Variavles name 导入变量文件

          Test Setup/Test Teardown     设置测试用例的setup/teardown

          Suite Setup/Suite Teardown     设置测试套件的setup/teardown

          Force Tags/Default Tags    设置标签

          Test Timeout   设置测试用例运行超时时间

          Documentation    添加说明

    2、Library :库,提供了一系列关键字

    3、KeyWords :关键字,即提供特定功能的函数。包括系统关键字和用户关键字

         用法示例:

          *** Keywords ***

          keyword_name

            keyword body

            ......

    4、Resource :资源,用户关键字集合,用于管理用户关键字,一般用户自定义关键字都写在资源文件中

    5、Variables :RF语法中的变量,单变量值和列表

    6、TestCases/TestSuite :测试用例/测试套件

       用法示例:

          *** Test Cases ***

          测试用例1

          测试用例2

          ……

    二、RF Variable:变量

    1、变量类型:

      1)纯值变量(只有一个值):${变量名}

      ==> 表示一个数据。作为参数传递,表示一个参数。

      2)list变量:@{变量名}

      ==> 表示一组数据。作为参数传递时,有几个数据就是几个参数。

      3)dict变量:&{变量名}

      ==> 表示一组键值对数据。作为参数传递时,有几个键值对就是几个参数。

    注意⚠️:关于变量声明,由于RF底层时python实现的,所以RF与python创建变量类似,变量不需要特定声明,只要有初始化赋值即可使用,默认情况下RF里的变量都是字符类型的。

    2、变量赋值:

      1)直接赋值:a = 1

      2)函数的返回值

    3、变量的取值:

    4、变量的定义与作用域:

      1)局部变量

      2)全局变量

      3)变量文件

    示例1:设置局部变量为套件级别的变量   Set Suite Variable

    示例2:定义当前套件全局有效的变量   ***Variable***

    示例3:在变量文件中定义,然后引用变量文件中定义的变量,此处的变量文件指的是.py文件

     

     

    三、RF语法与测试用例编写

    RF中,做任何事都是通过调用关键字来完成的,当然书写测试用例也是通过调用关键字来实现的。

    那么RF的关键字从哪来呢?

    ==> 1)内置关键字:直接调用/先引入再调用

    ==> 2)第三方关键字:先安装-再引入-再调用

    ==> 3)自定义关键字:使用python语言实现

    以上三种关键字可以统称为“系统关键字”

    ==> 4)用户关键字:不是通过代码实现的,用RF的语法编写的,主要用来表达业务,因此又叫业务关键字

    ⚠️ 使用eclipse创建项目时,项目名不要含有下划线,会自动替换为空格

    断言关键字,基本上都在标准库-BuiltIn中

    ⚠️ RF中关键字的参数都是字符串,是不能执行的,顾不能像python语句一样,将关键字调用作为另一个关键字的参数

     

    定义用户关键字示例:

    保存后,将鼠标移至关键字名称上,可见关键字信息(来源、参数、说明等信息)

    ⚠️ 关键字在RF中是不能单独执行的!

    在测试用例中调用定义的用户关键字

    ==> 用户关键字一般不在测试套件文件中定义,而是存放在资源文件中。

     

    与测套件文件的区别:

    资源文件的引入:

    调用资源文件中的用户关键字

    异常处理

    一旦抛出异常,返回False,没有发现异常,返回True

    ==> 关键字:Run Keyword And Return Status

    如果关键字运行成功并无异常,返回True;如果关键字运行有报错,则返回False

    四、RF 用于Web UI自动化

    SeleniumLibrary库:

     

    PO模式示例:

    RF-命令行参数

    用例运行设置-重运行/参数化/用例的自动化收集/用例筛选 参考pytest的命令行参数的形式

    robot命令

    1)自动化收集用例:robot 项目目录   -- 在给定的项目目录下开始收集用例

    2)识别机制:套件/测试套件/*** Test Cases ***

    3)输出文件存放:默认存放在命令运行的目录,如上图为C盘Users/yxj,则会生成在此目录下,可能会出现权限不够的问题,顾一般先切换至项目所在路径下,再执行运行命令

    4)用例筛选:

      1⃣️ 打标签名   

      2⃣️ -i 标签名  运行参数设置    如:robot E: fWebUITest -i smoke

    ==> 单用例打标签:

    ==> 整个套件下的用例都打标签:在settings中

    5)重运行机制:等到所有测试用例执行完成后,会生成output.xml文件,然后根据文件,获取其中失败的用例,然后重运行这些用例,不能指定重运行的次数

      1⃣️ 先运行一次用例:robot 项目目录

      2⃣️ 再运行一次失败用例:robot -R 步骤1中生成的output.xml路径

      3⃣️ 重运行第二次:robot -R 步骤2中生成的output.xml路径

     6)指定文件输出的路径:robot -d 目录

     7)设置运行时变量(获取外部传参):命令行的形式,获取命令行设置的变量   robot -v name:value 项目目录

    五、RF 接口自动化 

    1、安装

    2、关键字:RequestsLibrary库的关键字可以分为一下三类

      1)与服务端的会话

      2)请求类型

      3)响应结果转json

    3、接口测试用例示例:略

    4、RF实现数据驱动:通过将关键字设置为模板来实现

    六、自定义RF扩展库

    思考:通过类来实现还是函数来实现?

    ⚠️ 自定义三方库的存放路径中最好不要含有中文(python3支持中文,但python2不支持)

    1)库名、模块名、类名三者保持一致,这样在robot中导入时,就可以直接导入库名,避免一些路径上的问题

    2)实现关键字的时候:类 .py中的函数

    3)ROBOT_LIBRARY_VERSION = 1.0

          ROBOT_LIBRARY_SCOPE= ‘GLOBAl    在运行过程中,示例对象的作用域,因为会在多个文件中引入,当scope为global时,只创建一个实例,全局有效

    4)初始化函数__init__()一旦有参数,必须带有默认值

    5)文档说明:”””文档内容”””

    6)日志融合:引入robot的日志库,from robot.api import logger

    7)自己写的三方库,需要经过测试,即单元测试

     

  • 相关阅读:
    华为"128为大整数相加"机试题
    ORA-12545: 因目标主机或对象不存在, 连接失败
    VS2010 安装使用STLPort
    Debian 入门安装与配置1
    CF1072A Palindromic Twist 思维
    解决让刷新页面时不提示 "重试或取消”对话框
    php优化及高效提速问题小结
    让Tomcat支持php
    Php邮件发送源码
    使用iconv提示未知错误
  • 原文地址:https://www.cnblogs.com/panpanda/p/14142644.html
Copyright © 2011-2022 走看看