zoukankan      html  css  js  c++  java
  • robot framework

    参考网站

    • http://robotframework-userguide-cn.readthedocs.io/zh_CN/latest/ExtendingRobotFramework/CreatingTestLibraries.html
    • https://github.com/robotframework
    • http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
    • wxpython 2.8.12--https://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/
    • http://robotframework.org/Selenium2Library/Selenium2Library-1.8.0.html

    概念-什么是自动化测试框架

    1. 自动化测试框架能干什么
    • 每次写好的自动化的脚本的组织
    • 有选择的执行脚本,不需要人手动执行
    • 每个检查点是否通过的检查
    • 通用的功能进行组织到模块中,供其它模块的使用
    • 执行的结果输出报告形式
    1. 测试框架还能解决的问题
    • 自动测试用例的实现方式
    • 自动测试用例的开发支持--IDE&&库
    • 和用例管理系统的集成
    • 测试执行
      1. 相关测试套件(suite)和测试用例的执行原则,可以支持随意选择其中的测试用例的执行
      1. 初始化和清除:执行测试条件的预置条件,这一步对于程序来说非常重要
      1. 测试报告

    RF功能和特点

    1.测试人员开发测试数据文件(Test Data)对应一个个测试用例

    1. 测试数据文件里面使用的功能小模块叫关键字,由测试库(Test Library)实现
    2. robot framework加载测试库,并解释执行Test Data也就是测试用例,测试库一般需要自己开发
    3. 他提供简单易懂的表达式的“语言”来开发自动测试用例
    4. 用关键字(keyword)的形式来开发测试用例
    • 标准库提供了常用的功能
    • 第三方拓展库
    • 开发者根据产品自行开发库
    1. 定义了灵活且易理解的测试用例执行控制(包括初始化和清楚环境)
    2. 有清晰的体制和报表功能,可以清楚的查看测试执行结果
    3. 开发人员划分
    • 自动化框架、库开发者
    • 自动化用例开发者

    RF安装

    1. RF的安装
    • pip install robotframework - i https://pypi.douban.com/simple/
    1. RIDE的安装 -- 不是必须的工具,可视化的编辑工具
    • 一个简单的IDE
    • pip install robotframework-ride - i https://pypi.douban.com/simple/
    • wxpython的安装--RIDE依赖wxpython图像库最好用2.8.12.1,以上的版本不支持
    1. selenium2library的安装-- web自动化
    • 支持slelenium的自动化的rf扩展库
      4.上面的步骤做完后,使用win+r,输入ride.py,不能执行的时候需要关联python
    • pip install robotframework-selenium2library

      pycharm 的插件intellibot 的安装

    • browse respositities 选择下载或者直接选择第三个按钮
    • intellibot 包下载地址:https://www.intellibotrobotics.com/

    实战

    实战1--使用RIDE图形化--官网文档地址:http://robotframework.org/Selenium2Library/Selenium2Library.html

    1. 设置RIDE
    • 先自己创建一个文件,使用file-open dictory,选择创建的目录
    • 自动识别library的关键字,做法:RIDE工具中修改tools-preference --defaulte file fotmat修改为 robot
    • RIDE里面加入selenium2library的方法
      1. tools-->preference-->importing-->auto imports选择selenium2library的名字和地址
      1. 把webdriver的地址加到系统环境变量中,不包含exe的目录,修改好之后重新打开控制台,输入ride.py
      1. 右击->new suit ->file取名字--创建的是测试套件文件 or 选择目录,目录中可以包含测试套件的子目录和子套件文件,当文件有*表示没有保存
      1. 右击->new test case
      1. 使用edit,表格填写的方式,函数不是内置的需要申明,是内置的不需要申明
      1. 申明selenium2library:第一行输入ImportLi +(技巧)CTRL+ALTE+空格 自动搜索和补齐空格
      1. 设置库的名字:import library +selenium2library
      1. 设置访问地址:Open Browser +网址+浏览器
      1. 设置等待时间:Set Selenium Implicit Wait +5
      1. Import Text +id='kw'+ 搜索文本内容
      1. css查找,${firstRet}+Get Text+文本内容--意思是设置文本内容的变量为${firstRet}
      1. Should Contain +变量1-${firstRet}+变量2- 说明:变量1是否包含变量2的内容,should打头是检查点
      1. 执行-方法
    • 方法1:勾选case,点击白色的运行符号,点击log,显示测试的结果;点击report,展示测试报告,出现错误时,直接在浏览器中打开Log和report的链接
    • 方法2:点击run

    套件和用例的结构

    套件的概念

    • 测试套件是测试用例的集合
    • 功能相近的测试套件有可以组成更大的套件
    • 树形结构,类似于文件的格式

       

      `
      *** Settings ***
      Library Selenium2Library

    *** Test Cases ***
    测试1
    Open Browser http://www.114time.com/ chrome
    Set Selenium Implicit Wait 4
    ${date}= Get Text css=.date > b.year
    log to console ${date}
    Should Be Equal ${date} 2017
    Close Browser

    测试2
    ${var1} convert to integer 100
    ${var2} set variable 5
    should be true $var1 * int($var2) == 500
    `

    套件(数据文件)文件的表

    1. RF支持四种的表
    • 分别为Settings,Variable,Test Case,Keywords
    • 表名必须出现在第一单元中,表名大小写不敏感
    1. Settings表,是这个测试套件的全局配置表,比如这个测试套件要使用的测试库,资源文件,测试套件的环境初始化(setup)和清除(tear down),该套件内的标签等等
      *** Settings *** --大小写不敏感

    2. Test Case--用例的名字放在最前面
    3. 测试用例表里面的每个测试用例,大概可以分为
    • 配置部分
    • 主体部分

    • 1. 用例配置部分

    • [Documentation]--用例的文字说明
    • [Tags]-该用例的标签
    • [Setuo],[Teardown]--用例初始化和清楚操作
    • [Template]--申明该模块是模板关键字驱动,本用例值包含测试数据
    • [Timeup]--设置用例超时时间
    • 2.主体部分主要是由关键字组成

    • 关键字的来源:测试库、资源文件、测试用例所在的文件的关键字表
    • 用例主体部分也包含变量赋值

    4. Variable-测试套件中的全局变量表

    • ${javahome}

    5. Keywords用来定义测试套件中的关键字

    RF关键字的写法

    1. 技巧:should be true 的用法和eval,should be true中的变能量的写法,直接是$+变量名

    认识测试库

    1. 通常,关键字是由测试库提供的
    2. 测试库就是python 文件
    3. python 测试库里面的关键字的实现方式
    • 类的方法
    • 函数
    • RF 脚本使用函数名、方法名
    1. rf 如何发现路径
    • 和python 程序一样,sys.path

    库的导入

    1. 除了builtin
    2. 一种是在settings表中进行导入 :library abc
    3. 一种是在测试用例中使用import library
    4. 库导入的时候可以有参数,可以查看官方文档,指导每次的导入的参数的意思

    rf中的变量

    1. rf中的变量,就是Python中的变量
    • 它指向一个python对象

      2. rf变量对应的是什么python对象,他就是什么类型的对象
      3. rf中,对变量的不同的用法
    • Scalar 方式
      1. ${var}-直接把变量所对应的python 对象传递给关键字对应的函数
    • list 方式
      1. @{var} 展开list中的每个元素,作为多个参数传入
    • dictionary 方式
      1. &{var} 展开dict中的每个元素,作为多个参数传入

        4. 访问环境变量 %{env_var}

    collection 标准库

    1. 针对List和diction 的处理
    2. 创建并添加元素
    3. 数字变量${1},${2}

    dialogs库

    • 关键字get value from user 弹出一个对话框,得到键盘输入的数字

    循环

    • :For (inRange) +条件 直接是冒号+for

    条件判断、初始化和清除

    1. run keyword if 关键字做条件判断
    2. 自动换行设置--Python中使用反斜杠进行换行 例如:win;rf中使用将整体换行,使用三个点‘...加+换行内容’
    3. run keyword unless--当条件不成立的时候,执行if下面的语句

    Evalute

    1. ${var}=set variable ${890}等价于 ${var}=evalute ${890}
    2. 复杂的表达式 :${var} = evalute 'hello '*10

    初始化和清除

    1. setup是测试一个用例(套件)前面要做的事情
    2. tearup是测试后要做的事情
    3. 清除和初始化操作,每次放在都可以不影响后面的测试
    4. 测试套件目录,测试套件文件和测试用例都应该有自己的清除操作
    5. 所有的清除和初始化操作只能有一个关键字构成
    6. 用例的setup和tearup
    7. 套件中的setup和tearup
      1. 写在测试套件文件的settings
      1. 两种类型
    • Suite setup/tearup--进入和退出这个suite执行用例前后必须执行且分别执行一次
    • Test setup和tearup ---当suite本身没有setup和tearup才执行
      1. 测试套件的setup/tearup
    • 在其init的初始化文件-init-.txt或者_init_.robot里面的settings表中
    • setup和tearup使用和上面的两种类型中的方法相同

      遵循就近原则

    关键字

    1. 用户关键字解决重复性的代码,把多个关键字组成一个'宏'关键字
    2. 定义好用户关键字后,该测试套件中里面就可以使用该用户关键,就和库关键一样

      3. 写法
    • Keywords表中定义,通用,和测试用例表中定义一样
    • 把代码公共的部分提取出来,放进一个关键字中
    • 使用参数解决公共部分不同的,使用[arguments]来进行配置
    • [Arguments] 

      ${name} ${desc} ${displayidx}
    • [Return]表示有返回

      资源文件-python中库的概念

    共享变量和python测试库

    变量表中声明变量

    • 首先我们要创建Variable表

      *** Variable 

      ${MgLoginUrl1} http://www.1234.com

      list变量----@{database} 127.0.0.1 3306
      -1. @{database}[0]--去除列表中第一个元素
      * Dict变量--&{user1} name=auto pw=123**
    • Variable中申明文件的地址,如果是在本问价的地址中,就直接写地址,不在本文件的地址中是a,使用相对路径查找
    • Variable中申明的文件在其他文件或者模块中-----win+R 输入set Pythonpath=‘要查找的文件路劲’
    • Variable中申明的文件在其他文件或者模块中-----win+R 输入robot -- Pythonpath ‘要查找的文件路劲’

    Python拓展关键字

    1. Python模块作为测试库
    • 模块文件名作为测试库的名字
    • 比如Python模块中叫Mylibrary,对应的Python文件就是Mylibrary.py,那么测试库的名字就是Mylibrary
    • 定义在Python模块文件中的函数,名称前有**_**前缀的不会作为关键字

    python 扩展库的搜索规则

    1. 完全按照python的模块和搜索规则来的
    • 如果在包内 pylib/login/rightpass.py
      Settings
      Library pylib.login.rightpass
    1. 在settings中声明资源文件和变量文件
    • 路劲,目录之间的分隔符,不用点.,而是用斜杠/
    1. 在settings中声明测试库:
    • 路劲,目录之间的分隔符,可以用点.,也可以用斜杠/
    • 路径分隔符,用点后面不加py,用斜杠后面加.py

    项目目录和执行参数

    项目文件类型种类

    • 用例套件文件、目录
    • RF资源文件
    • 测试库
    • 变量文件

      当资源文件的位置变了的时候,可以从跟了目录进行找

    • Select from list by label 关键字可以从下拉框中找元素
    • run key word 可以让初始操作,有不一样的方法

    结构优化

    • 合并重复的初始化和清除操作
    • 去掉多余的管理员登陆操作
    • 合理充足目录结构

      rf用例的执行

      rf的命令格式

    • robot [options] data_sourse
      1. options 是rf命令的选项,可以为空
      1. data_sourse是要执行的测试套件文件或者目录的路径。可以是绝对路径,也可以是相对路径,相对于当前shell的工作目录
    • robot tests.robot
    • robot path/to/my_tests/
    • robot c: obot ests.robot
      1. 如果指定的是测试套件文件,则执行该文件中所有的测试用例
      1. 如果指定的是测试套件目录,则递归执行该目录下包含的所有的子目录。,里面所有的测试套件文件里面的用例
      1. 可以指定多个要执行的测试套件文件、目录,甚至用通配符有来表示多个测试,如下所示:
        *** robot my_tests.robot you_tests.robot -----直接把两个测试文件连载一起
        *** robot --name Example Path/to/tests/pattern_*.robot
    • 多个测试数据的情况,本次测试的名字就是他们名字的相加
      *** robot my_tests & you_tests
    • 用--name选项来指定本次测试名字,像上次第二行所示
      *** robot --pythonpath .--name 回测测试 tc

      1. 根据名称选择测试用例
    • 可以通过--test--suite来指定执行哪些用例或者套件而且还支持通配符的方式
      例如:

      --test Example # 执行名为example的用例 

      --test mytest --test yourtest # 执行名为 mytest和yourtest 的用例
      --test Example* # 执行名字以example开头的用例
      --suite mysuite # 执行名为mysuite 的套件

      1. 可以在自动化的用例后面加用例的编号,该编号和测试用例的编号相同

    使用参数文件,执行测试用例

    如果有的时候,参数太长,我们通可以使用参数文件,我们可以把所有的参数都放在参数文件中,比如:

    --pythonpath . 

    --name 回测测试 

    --test tc001 

    --test 
    tc002 

    --test *tc003 

    tc 

    命令robot -A filename

    添加ROBOT_LIBRARY_SCOPE='GLOBAL'来使得不需要每次调用库的时候,都实例化一次,执行class中的内容

    should be true 的用法

      • 使用这个关键字的时候,语法符合python的语法
      • 变量${var},使用变量名用$var,去掉花括号,使用变量值用${var},保持不变
      • 库名大小写敏感,关键字不敏感
      • 库的导入可以添加参数,在类的初始参数的方法中,比如:
      • 一般导入的库都是由类来实现
  • 相关阅读:
    期待着一个目标 和一个新生
    做一个真正意志坚强的人
    从猫叫、老鼠跑和人醒看观察者模式
    再看C++(6)操作符重载
    英尺
    再看C、C++、数据结构(三)
    一道比较有意思的打印题(不需要会很多计算机语言知识,简单的C就行)
    再看C++(四)const的终极使用
    再看C、C++、数据结构(二)
    再看C语言和数据结构(一)
  • 原文地址:https://www.cnblogs.com/liruxian/p/9961310.html
Copyright © 2011-2022 走看看