robot framework

2018/11/15 00:47
阅读数 24

参考网站

  • 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\b,使用相对路径查找
  • 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:\robot\tests.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},保持不变
    • 库名大小写敏感,关键字不敏感
    • 库的导入可以添加参数,在类的初始参数的方法中,比如:
    • 一般导入的库都是由类来实现
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部