RobotFramework自动化测试框架快速入门(一篇解决)

文章目录

  • RobotFramework框架
    • 前言
    • 一、基础篇——RobotFramework的使用
      • 1、RobotFramework环境部署
        • 1.1 工具准备
        • 1.2 安装
      • 2、RIDE使用方法
        • 2.1 最基本流程
          • 2.1.1 创建项目
          • 2.1.2 创建测试套件
          • 2.1.3 创建测试用例
        • 2.2 Ride各面板说明
          • 2.2.1 项目Edit区
          • 2.2.2 测试套件Edit区
          • 2.2.3 测试用例Edit区
            • 使用技巧
          • 2.2.4 Text Edit区
          • 2.2.5 Run区
        • 2.3 案例层和流程层分离
          • 2.3.1 创建资源
          • 2.3.2 创建User Keyword
          • 2.3.3 User Keyword参数设置
          • 2.3.4 导入Resource
        • 2.4 循环测试用例
      • 3、命令行运行RF脚本
        • 3.1 运行项目
        • 3.2 运行套件
        • 3.3 运行用例
          • 3.3.1 指定某个suite下某个用例执行
          • 3.3.2 指定某个suite下多个用例执行
          • 3.3.3 指定多个不同suite下多个用例执行
          • 3.3.4 运行指定/除指定Tag的用例
        • 3.4 通过执行文件执行命令
        • 3.5 结果报告
          • 3.5.1 更改结果报告输出目录
          • 3.5.2 指定文件输出名
      • 4、pabot并行测试
        • 4.1 安装
        • 4.2 Robot VS Pabot
    • 二、进阶篇——RobotFramework应用
      • 1、主要应用场景
      • 2、总结优劣势(与pytest框架相比)

RobotFramework框架

前言

Robot Framework是一款python编写的功能自动化测试框架。⽀持关键字驱动且可扩展性好,可以同时测试多种类型的客户端,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。

Robot Framework 框架除了自身提供了非常多的基础库功能,也支持第三方扩展库,同时提供了非常多的内建工具、扩展接口,方便框架与其他系统进行对接。这些一起构建了一套全面且易扩展的Robot Framework框架生态系统。

一、基础篇——RobotFramework的使用

1、RobotFramework环境部署

1.1 工具准备
  • python(3.9.7)
  • RIDE必要库
    robotframework
    wxpython
    robotframework-ride
  • 根据需求安装
    robotframework-appiumlibrary
    robotframework-Selenium2Library
1.2 安装

(1)pip install robotframework
RobotFramework自动化测试框架快速入门(一篇解决)_第1张图片

(2)、pip install wxpython

Wxpython是python非常有名的一个GUI库,支持python图形化界面,因为RIDE 是基于这个库开发的,所以这个必须安装。
RobotFramework自动化测试框架快速入门(一篇解决)_第2张图片

(3)、pip install robotframework-ride(报错)

RIDE是Robot Framework带图形界面测试编辑器

由于老版RIDE不支持python3,需要安装psutil和最新版的robotframework-ride

解决方法:

pip install psutil

pip install -U --pre robotframework-ride

注:-U升级安装,–pre查找预发行和正在开发的版本

安装完成后桌面会有个RIDE快捷方式: 在这里插入图片描述
如果桌面没有图标可从Python/Scripts中运行ride.py即可
RobotFramework自动化测试框架快速入门(一篇解决)_第3张图片

(4)、pip install robotframework-appiumlibrary

AppiumLibrary是RobotFramework的appium测试库
RobotFramework自动化测试框架快速入门(一篇解决)_第4张图片

(5)、pip install robotframework-selenium2Library

Selenium2Library是Robot Framework的Web测试库
RobotFramework自动化测试框架快速入门(一篇解决)_第5张图片

2、RIDE使用方法

RIDE是一款专门用来编辑Robot Framework用例的软件。
RobotFramework自动化测试框架快速入门(一篇解决)_第6张图片

2.1 最基本流程
2.1.1 创建项目

File->New Project
RobotFramework自动化测试框架快速入门(一篇解决)_第7张图片
注:Type选择Directory原因是,在Directory的项目下可以创建测试套件,如果选Tpye为File,则只能创建测试用例,这不利于用例的管理。

2.1.2 创建测试套件

右键项目FirstTest,点击New Suite。
RobotFramework自动化测试框架快速入门(一篇解决)_第8张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第9张图片
注:Type选择File原因是,测试用例只能在File类型下创建,如果Type为Directory,还得重新再继续建File的测试套件后才能创建测试用例。

2.1.3 创建测试用例

右键TestSuite,点击New Test Case
RobotFramework自动化测试框架快速入门(一篇解决)_第10张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第11张图片
创建完成后项目布局如下:
RobotFramework自动化测试框架快速入门(一篇解决)_第12张图片
在这里插入图片描述
优点:图形化界面,易操作

2.2 Ride各面板说明
2.2.1 项目Edit区

Edit->Settings部分:
RobotFramework自动化测试框架快速入门(一篇解决)_第13张图片
Documentation:文档,每一项都有。可以给当前的对象写一些文档说明。

Suite Setup:指的是测试套件启动的时候就执行某个关键字。(例:我在Suite Setup设置了Sleep | 5sec,表示等待5秒,要注意关键字的参数要使用|分隔)

Suite Teardown:指的是测试套件结束的时候就执行某个关键字。

Test Setup:指的就是案例启动的时候执行某个关键字。

Test Teardown:指的就是案例结束的时候执行某个关键字。

Force Tags:强制标记,简单讲就是给当前项目及项目下的测试套件及套件下的每个测试案例都加上Tag,只能在设置的地方删除。

Edit其他部分:
RobotFramework自动化测试框架快速入门(一篇解决)_第14张图片

(1)加载外部文件

Library:加载库,主要是[PYTHON目录]\Lib\site-packages里的测试库。

RobotFramework自动化测试框架快速入门(一篇解决)_第15张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第16张图片

特别强调:在导包时一定要和文件夹的名字一致,包括大小写
RobotFramework自动化测试框架快速入门(一篇解决)_第17张图片

Resource:加载资源,主要是你工程相关的资源文件。

Variables:加载变量文件,不怎么用,可暂时忽略。

(2)定义内部变量

Add Scalar:定义变量。

Add List:定义列表型变量。

Add Dict:定义词典。

(3)元数据定义

Add Metadata:定义元数据。

2.2.2 测试套件Edit区

Edit->Settings部分:
RobotFramework自动化测试框架快速入门(一篇解决)_第18张图片
有时候Settings是隐藏的,点击settings按钮显示。

Documentation:文档,每一项都有。可以给当前的对象写一些文档说明。

Suite Setup:指的是测试套件启动的时候就执行某个关键字。(例:我在Suite Setup设置了Sleep | 5sec,表示等待5秒,要注意关键字的参数要使用|分隔)

Suite Teardown:指的是测试套件结束的时候就执行某个关键字。

Test Setup:指的就是案例启动的时候执行某个关键字。

Test Teardown:指的就是案例结束的时候执行某个关键字。

Test Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。

Test Timeout:设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。这是防止某些情况导致案例一直卡住不动,也不停止也不失败。

Force Tags:强制标记,简单讲就是给当前测试套件及套件下的每个测试案例都加上Tag,在测试案例上不能删除,只能在设置的地方删除。

Default Tags:默认标记,给自身打上Tag,而不会给子集打上Tag(区分Force Tags)。

Edit其他部分:
RobotFramework自动化测试框架快速入门(一篇解决)_第19张图片

同项目Edit。

2.2.3 测试用例Edit区

RobotFramework自动化测试框架快速入门(一篇解决)_第20张图片

(1)Settings部分

Documentation:文档,每一项都有。可以给当前的对象写一些文档说明。

Setup:指的是案例启动的时候执行某个关键字。

Teardown:指的是案例结束的时候执行某个关键字。

Timeout:设置每一个测试案例的超时时间,超时则失败,并停止案例运行。

Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。

Tags:标记某个测试用例。在Run区中Only Run Tests with these Tags和Skip Tests with these Tags,会通过这个标志来识别是否运行或跳过用例。

(2)表格部分(最重要的部分,编写测试用例)

第一列一般写的是关键字,关键字的来源包括BuiltIn库,第三方导入库,自己编写的导入库。

使用技巧
  1. 如果忘了关键字,按F5调出Search Keywords查找

也可以输入关键字的一部分再同时按住ctrl+shift+space或者ctrl+alt+space键,则可以自动带出相关关键字,以及选中关键字的用法。
RobotFramework自动化测试框架快速入门(一篇解决)_第21张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第22张图片

注:如果使用Ctrl+Shift+space快捷键无反应,有可能是因为和电脑键盘快捷键有冲突,找到键盘的设置,取消Ctrl+空格热键再去尝试。

b.Ctrl+鼠标悬浮(即鼠标在某个关键字上),可以直接显示该关键字的相关用法。

也可以按住ctrl+alt+space键,查看该关键字的用法。
RobotFramework自动化测试框架快速入门(一篇解决)_第23张图片

c.第二三四五列,一般是输入参数,红色的表示必填,浅灰表示选填,深灰则无需填写。
RobotFramework自动化测试框架快速入门(一篇解决)_第24张图片

d.带*说明该项没保存,记得实时保存文件。
RobotFramework自动化测试框架快速入门(一篇解决)_第25张图片

e.其它快捷键

代码注释: ctrl + #

取消注释: ctrl + $

删除整行代码: ctrl + d

撤销操作:ctrl + z

2.2.4 Text Edit区

该部分记录的是Settings和测试用例文本信息,RIDE自动生成,不用编写。

例如:
RobotFramework自动化测试框架快速入门(一篇解决)_第26张图片

2.2.5 Run区

RobotFramework自动化测试框架快速入门(一篇解决)_第27张图片
Execution Profile:选择运行方式,选项有pybot、jybot等,默认robot即可。

Report和Log:告和日志,要运行之后才能点击。他们的区别是报告更多是结果上的展示,日志更多是过程的记录。

Autosave:自动保存,如果不勾选,在修改了案例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存了。

Pause on failure:关键字执行失败后暂停。

Show message log:展示log信息。

Start:运行案例。若该测试套件下的测试用例前无勾选,则默认执行该测试套件下所有的用例。若测试用例勾选,则执行该测试陶见下勾选的用例。

Stop:停止案例。

Only Run Tests with these Tags:只运行这些标记的测试案例。在Test Case的settings里可以添加tag。

Skip Tests with these Tags:跳过这些标记的测试案例。
RobotFramework自动化测试框架快速入门(一篇解决)_第28张图片

2.3 案例层和流程层分离

举一个例子:使用Selenium2Library库,调用Edge浏览器打开百度搜索页面搜索“RobotFramework使用方法”,等待5s后再搜索“RobotFramework-ride使用方法”后关闭页面。步骤如下:
RobotFramework自动化测试框架快速入门(一篇解决)_第29张图片

为了减少冗余,可以把整个流程剥离出来成一个关键字,然后在不同的Test case中调用这个关键字,传递不同的参数,以进行不同数据在同一流程下测试。

优点:表格化⽤例,降低编写接⼝和⽤例的难度。关键字驱动,重⽤性好,利⽤现有关键字组装新关键字,简化⾃动化测试过程。

2.3.1 创建资源

如果存在可以不需要创建。右键项目FirstTest,点击New Resource
RobotFramework自动化测试框架快速入门(一篇解决)_第30张图片

我这里新建的资源叫Resource.txt
RobotFramework自动化测试框架快速入门(一篇解决)_第31张图片

2.3.2 创建User Keyword

先选中Testcase1中所有的脚本,右键选择Extract Keyword,取名为“百度搜索”。

RobotFramework自动化测试框架快速入门(一篇解决)_第32张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第33张图片
此时左边区域会出现“百度搜索”的User Keyword,该User Keyword在测试套件下,一般测试套件不放置User Keyword,建议User Keyword放置在Resource下。

将“百度搜索”User Keyword移至Resource.txt下

RobotFramework自动化测试框架快速入门(一篇解决)_第34张图片RobotFramework自动化测试框架快速入门(一篇解决)_第35张图片

Resource.txt导入Library“Selenium2Library”

RobotFramework自动化测试框架快速入门(一篇解决)_第36张图片

2.3.3 User Keyword参数设置

由于搜索数据可变,将其作为参数输入,变量用${}表示,在Settings的Arguments设置,若是有多个参数,那么用”|”分隔,如${参数1}|${参数2}
RobotFramework自动化测试框架快速入门(一篇解决)_第37张图片

2.3.4 导入Resource

在测试套件中导入Resource,才能使用该Resource下的User Keyword。
RobotFramework自动化测试框架快速入门(一篇解决)_第38张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第39张图片

此时TestCase1需要你输入“百度搜索”的两个参数

RobotFramework自动化测试框架快速入门(一篇解决)_第40张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第41张图片
优点:有⾼度可扩展性,由通⽤的测试库和⼯具组成,也可以⾃定义资源库,根据项目的需要自定义一些关键字。可以“汉化”,对非脚本开发者更友好,也方便没有代码基础的功能测试人员进行测试。

2.4 循环测试用例

关键字:Repeat Keyword

在只有自动化的时候,往往不是只执行一次就可以重现问题,可能我们需要重复执行一个用例好几遍。Repeat关键字可以重复执行一个关键字,通过设置执行的次数。如果我们需要重复执行某一个用例的时候就可以把这个用例的内容都封装成一个关键字再通过repeat执行就很好的解决了问题。
RobotFramework自动化测试框架快速入门(一篇解决)_第42张图片

优点:适用于轮次很多的验收测试。

3、命令行运行RF脚本

本测试项目结构如下:

建议所有可执行的suite以.robot作为后缀结尾,所有配置、关键字资源等以.txt作为后缀结尾,便于区分和后续操作。
RobotFramework自动化测试框架快速入门(一篇解决)_第43张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第44张图片

3.1 运行项目

语令:robot <项目路径>

会遍历项目下的所有suite

例:robot FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第45张图片

3.2 运行套件

语令:robot []…

执行该suite中的所有test case

例1:robot FirstTest\TestSuite.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第46张图片

例2:robot FirstTest\TestSuite.robot FirstTest\TestSuite2.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第47张图片

如果觉得测试标题名称太啰嗦、不美观,可以通过-N或–name参数指定名称

例3:robot -N 测试 FirstTest\TestSuite.robot FirstTest\TestSuite2.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第48张图片

3.3 运行用例
3.3.1 指定某个suite下某个用例执行

语令:robot -t/–test 用例名

执行suite中的某个用例

例:robot -t TestCase1 FirstTest\TestSuite.robot

RobotFramework自动化测试框架快速入门(一篇解决)_第49张图片

3.3.2 指定某个suite下多个用例执行

语令:robot [-t/–test 用例名]…

执行suite中的多个用例

例1:robot -t TestCase1 -t TestCase2 FirstTest\TestSuite.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第50张图片

例2:robot -t TestCase* FirstTest\TestSuite.robot

命令还可以与通配符结合使用,此例运行了TestSuite中的TestCase1和TestCase2
RobotFramework自动化测试框架快速入门(一篇解决)_第51张图片

语令:robot [-s/–suite ] [-t/–test 用例名]… 项目名

注:不加.robot后缀名,最后要带上项目名,否则会报错

例3:robot -s TestSuite -t TestCase1 -t TestCase2 FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第52张图片

3.3.3 指定多个不同suite下多个用例执行

语令:robot [-s/–suite [-t/–test 用例名]…]… 项目名

例1:robot -s TestSuite -t TestCase1 -t TestCase2 -s TestSuite2 -t TestCase21 FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第53张图片

例2:robot -t *1 FirstTest\*.robot

命令还可以与通配符结合使用,此例运行了TestSuite中的TestCase1和TestSuite2中的TestCase21
RobotFramework自动化测试框架快速入门(一篇解决)_第54张图片

3.3.4 运行指定/除指定Tag的用例

用RIDE给测试用例指定Tag:

TestCase1:测试1 TestCase2:测试2 TestCase21:测试3 TestCase22:测试4
RobotFramework自动化测试框架快速入门(一篇解决)_第55张图片

(1)运行指定Tag的用例:

语令:robot [-i/–include Tag名] /<项目名>

例:robot -i 测试1 FirstTest\TestSuite.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第56张图片

(2)运行除指定Tag的用例:

语令:robot [-e/–exclude Tag名] /<项目名>

例1:robot -e 测试1 FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第57张图片

指定多个不同suite下排除某些Tag用例

例2:robot -s TestSuite -e 测试1 -e 测试2 -s TestSuite2 -e 测试3 FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第58张图片

3.4 通过执行文件执行命令

如果命令太长,可以将命令放到一个txt文件中,通过命令robot -A 文件名执行。

注意:参数之间要换行!!!不可放在同一行

command.txt内容 :
–name 命令文件测试
-s TestSuite
-t TestCase1
-t TestCase2
-s TestSuite2
-t TestCase22
FirstTest

RobotFramework自动化测试框架快速入门(一篇解决)_第59张图片

3.5 结果报告

结果报告包含output.xml、log.html、report.html,默认生成到当前目录。

output.xml记录的测试结果是XML文件,根据特定的需要可以编写脚本读取XML文件并生成特定的测试报告。如下图:
RobotFramework自动化测试框架快速入门(一篇解决)_第60张图片

log.html会记录RobotFramework运行的每一步操作,主要用于编写测试脚本的过程中查看。如下图:
RobotFramework自动化测试框架快速入门(一篇解决)_第61张图片

report.html为测试报告,整理性的展示测试用例的运行情况。如下图:

RobotFramework自动化测试框架快速入门(一篇解决)_第62张图片

3.5.1 更改结果报告输出目录

语令:robot -d/–outputdir <指定目录>

例:robot -d FirstTest\Report -i 测试1 FirstTest\TestSuite.robot
在这里插入图片描述

3.5.2 指定文件输出名

(1)可以对其分别修改,参数如下:

-o/–output <指定名称>

-l/–log <指定名称>

-r/–report <指定名称>

例:robot -d FirstTest\Report -r rep.html -i 测试1 FirstTest\TestSuite.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第63张图片

(2)不想要某个报告可以设置None

例:robot -l NONE -i 测试1 FirstTest\TestSuite.robot
RobotFramework自动化测试框架快速入门(一篇解决)_第64张图片

优点:自动生成html格式的测试报告和日志。

4、pabot并行测试

Pabot:Robot Framework 测试用例并行执行器

4.1 安装

语令:pip install -U robotframework-pabot
RobotFramework自动化测试框架快速入门(一篇解决)_第65张图片

4.2 Robot VS Pabot

Robot:“串行”测试

过程:项目->suite1-> suite1.用例1-> suite1.用例2…->suite2-> suite2.用例1->…

RobotFramework自动化测试框架快速入门(一篇解决)_第66张图片

RobotFramework自动化测试框架快速入门(一篇解决)_第67张图片
Pabot:“并行”测试,默认suite级别

(1)参数:–processes [进程数]

要使用多少个并行执行程序(默认最大值为2和cpu数),suite级别并行

例1:pabot --processes 2 FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第68张图片

RobotFramework自动化测试框架快速入门(一篇解决)_第69张图片

(2)参数:–testlevelsplit

测试用例级别并行

例2:pabot --testlevelsplit FirstTest
RobotFramework自动化测试框架快速入门(一篇解决)_第70张图片
RobotFramework自动化测试框架快速入门(一篇解决)_第71张图片

优点:支持并行测试,节省时间成本。

二、进阶篇——RobotFramework应用

1、主要应用场景

应用场景更适合:

(1) web自动化测试:SeleniumLibrary,Selenium2Library,Selenium2Library for java…

(2)接口自动化测试:RequestsLibrary…

(3)APP自动化测试:AppiumLibrary…

2、总结优劣势(与pytest框架相比)

RobotFramework自动化测试框架快速入门(一篇解决)_第72张图片




写在最后:

   码文不易,求个关注~

你可能感兴趣的:(Python自动化,自动化,测试工具,模块测试,单元测试,python,可用性测试,功能测试)