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

时间:2024-10-20 13:02:06

文章目录

  • 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
在这里插入图片描述

(2)、pip install wxpython

Wxpython是python非常有名的一个GUI库,支持python图形化界面,因为RIDE 是基于这个库开发的,所以这个必须安装。
在这里插入图片描述

(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中运行即可
在这里插入图片描述

(4)、pip install robotframework-appiumlibrary

AppiumLibrary是RobotFramework的appium测试库
在这里插入图片描述

(5)、pip install robotframework-selenium2Library

Selenium2Library是Robot Framework的Web测试库
在这里插入图片描述

2、RIDE使用方法

RIDE是一款专门用来编辑Robot Framework用例的软件。
在这里插入图片描述

2.1 最基本流程
2.1.1 创建项目

File->New Project
在这里插入图片描述
注:Type选择Directory原因是,在Directory的项目下可以创建测试套件,如果选Tpye为File,则只能创建测试用例,这不利于用例的管理。

2.1.2 创建测试套件

右键项目FirstTest,点击New Suite。
在这里插入图片描述
在这里插入图片描述
注:Type选择File原因是,测试用例只能在File类型下创建,如果Type为Directory,还得重新再继续建File的测试套件后才能创建测试用例。

2.1.3 创建测试用例

右键TestSuite,点击New Test Case
在这里插入图片描述
在这里插入图片描述
创建完成后项目布局如下:
在这里插入图片描述
在这里插入图片描述
优点:图形化界面,易操作

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

Edit->Settings部分:
在这里插入图片描述
Documentation:文档,每一项都有。可以给当前的对象写一些文档说明。

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

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

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

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

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

Edit其他部分:
在这里插入图片描述

(1)加载外部文件

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

在这里插入图片描述
在这里插入图片描述

特别强调:在导包时一定要和文件夹的名字一致,包括大小写
在这里插入图片描述

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

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

(2)定义内部变量

Add Scalar:定义变量。

Add List:定义列表型变量。

Add Dict:定义词典。

(3)元数据定义

Add Metadata:定义元数据。

2.2.2 测试套件Edit区

Edit->Settings部分:
在这里插入图片描述
有时候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其他部分:
在这里插入图片描述

同项目Edit。

2.2.3 测试用例Edit区

在这里插入图片描述

(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键,则可以自动带出相关关键字,以及选中关键字的用法。
在这里插入图片描述
在这里插入图片描述

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

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

也可以按住ctrl+alt+space键,查看该关键字的用法。
在这里插入图片描述

c.第二三四五列,一般是输入参数,红色的表示必填,浅灰表示选填,深灰则无需填写。
在这里插入图片描述

d.带*说明该项没保存,记得实时保存文件。
在这里插入图片描述

e.其它快捷键

代码注释: ctrl + #

取消注释: ctrl + $

删除整行代码: ctrl + d

撤销操作:ctrl + z

2.2.4 Text Edit区

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

例如:
在这里插入图片描述

2.2.5 Run区

在这里插入图片描述
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:跳过这些标记的测试案例。
在这里插入图片描述

2.3 案例层和流程层分离

举一个例子:使用Selenium2Library库,调用Edge浏览器打开百度搜索页面搜索“RobotFramework使用方法”,等待5s后再搜索“RobotFramework-ride使用方法”后关闭页面。步骤如下:
在这里插入图片描述

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

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

2.3.1 创建资源

如果存在可以不需要创建。右键项目FirstTest,点击New Resource
在这里插入图片描述

我这里新建的资源叫
在这里插入图片描述

2.3.2 创建User Keyword

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

在这里插入图片描述
在这里插入图片描述
此时左边区域会出现“百度搜索”的User Keyword,该User Keyword在测试套件下,一般测试套件不放置User Keyword,建议User Keyword放置在Resource下。

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

在这里插入图片描述在这里插入图片描述

导入Library“Selenium2Library”

在这里插入图片描述

2.3.3 User Keyword参数设置

由于搜索数据可变,将其作为参数输入,变量用${}表示,在Settings的Arguments设置,若是有多个参数,那么用”|”分隔,如${参数1}|${参数2}
在这里插入图片描述

2.3.4 导入Resource

在测试套件中导入Resource,才能使用该Resource下的User Keyword。
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
优点:有⾼度可扩展性,由通⽤的测试库和⼯具组成,也可以⾃定义资源库,根据项目的需要自定义一些关键字。可以“汉化”,对非脚本开发者更友好,也方便没有代码基础的功能测试人员进行测试。

2.4 循环测试用例

关键字:Repeat Keyword

在只有自动化的时候,往往不是只执行一次就可以重现问题,可能我们需要重复执行一个用例好几遍。Repeat关键字可以重复执行一个关键字,通过设置执行的次数。如果我们需要重复执行某一个用例的时候就可以把这个用例的内容都封装成一个关键字再通过repeat执行就很好的解决了问题。
在这里插入图片描述

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

3、命令行运行RF脚本

本测试项目结构如下:

建议所有可执行的suite以.robot作为后缀结尾,所有配置、关键字资源等以.txt作为后缀结尾,便于区分和后续操作。
在这里插入图片描述
在这里插入图片描述

3.1 运行项目

语令:robot <项目路径>

会遍历项目下的所有suite

例:robot FirstTest
在这里插入图片描述

3.2 运行套件

语令:robot [<suite相对路径或绝对路径>]…

执行该suite中的所有test case

例1:robot FirstTest\
在这里插入图片描述

例2:robot FirstTest\ FirstTest\
在这里插入图片描述

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

例3:robot -N 测试 FirstTest\ FirstTest\
在这里插入图片描述

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

语令:robot -t/–test 用例名 <suite相对路径或绝对路径>

执行suite中的某个用例

例:robot -t TestCase1 FirstTest\

在这里插入图片描述

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

语令:robot [-t/–test 用例名]… <suite相对路径或绝对路径>

执行suite中的多个用例

例1:robot -t TestCase1 -t TestCase2 FirstTest\
在这里插入图片描述

例2:robot -t TestCase* FirstTest\

命令还可以与通配符结合使用,此例运行了TestSuite中的TestCase1和TestCase2
在这里插入图片描述

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

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

例3:robot -s TestSuite -t TestCase1 -t TestCase2 FirstTest
在这里插入图片描述

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

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

例1:robot -s TestSuite -t TestCase1 -t TestCase2 -s TestSuite2 -t TestCase21 FirstTest
在这里插入图片描述

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

命令还可以与通配符结合使用,此例运行了TestSuite中的TestCase1和TestSuite2中的TestCase21
在这里插入图片描述

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

用RIDE给测试用例指定Tag:

TestCase1:测试1 TestCase2:测试2 TestCase21:测试3 TestCase22:测试4
在这里插入图片描述

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

语令:robot [-i/–include Tag名] <suite相对路径或绝对路径>/<项目名>

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

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

语令:robot [-e/–exclude Tag名] <suite相对路径或绝对路径>/<项目名>

例1:robot -e 测试1 FirstTest
在这里插入图片描述

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

例2:robot -s TestSuite -e 测试1 -e 测试2 -s TestSuite2 -e 测试3 FirstTest
在这里插入图片描述

3.4 通过执行文件执行命令

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

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

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

在这里插入图片描述

3.5 结果报告

结果报告包含、、,默认生成到当前目录。

记录的测试结果是XML文件,根据特定的需要可以编写脚本读取XML文件并生成特定的测试报告。如下图:
在这里插入图片描述

会记录RobotFramework运行的每一步操作,主要用于编写测试脚本的过程中查看。如下图:
在这里插入图片描述

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

在这里插入图片描述

3.5.1 更改结果报告输出目录

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

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

3.5.2 指定文件输出名

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

-o/–output <指定名称>

-l/–log <指定名称>

-r/–report <指定名称>

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

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

例:robot -l NONE -i 测试1 FirstTest\
在这里插入图片描述

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

4、pabot并行测试

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

4.1 安装

语令:pip install -U robotframework-pabot
在这里插入图片描述

4.2 Robot VS Pabot

Robot:“串行”测试

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

在这里插入图片描述

在这里插入图片描述
Pabot:“并行”测试,默认suite级别

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

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

例1:pabot --processes 2 FirstTest
在这里插入图片描述

在这里插入图片描述

(2)参数:–testlevelsplit

测试用例级别并行

例2:pabot --testlevelsplit FirstTest
在这里插入图片描述
在这里插入图片描述

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

二、进阶篇——RobotFramework应用

1、主要应用场景

应用场景更适合:

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

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

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

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

在这里插入图片描述




写在最后:

   码文不易,求个关注~