Robot Framework接口自动化框架

article/2025/10/18 21:38:41

Robot Framework简介

1、什么是Robot Framework

  • 由Nokia Siemens Networks(诺基亚西门子)开发。
  • Robot Framework是一款基于python的功能自动化测试框架。
  • 可以同时测试多种类型的客户端和接口。
  • 主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。

2、RF的特点

(1)本身不提供任何类型测试,只提供测试框架的基本功能

(2)使用简单:使用表格语法,统一编写测试用例

                                也可像编程一样,编写RF脚本

(3)基于Python所以有丰富的库

(4)复用性高,可利用现有关键字组合新关键字

(5)支持各种变量,如字符串、列表、字典等,支持if和for语句

(6)提供标签功能,可以有选择性的执行测试用例

(7)输出的报告和日志是HTML格式,方便阅读分析

3、搭建RF环境

4、创建RF测试项目、测试套件、测试用例

对应 test project 、 test suite  、test case

(1)打开Ride

(2)创建测试项目、测试套件、测试用例

        

(3)导入包

(4)测试用例的基本结构

结果存入变量

操作名

操作别名或参数

url或参数

传递参数

5、RF脚本编写测试用例

5.1关键字

不区分大小写,建议大写

5.2注释

    • Comment messages
      • 快捷键:ctrl+#
      • 取消:ctrl+$
    • 行尾加
      • #注释文字

5.3输出日志

关键字log

    • Log message1,message2或变量1,变量2,… level=INFO
      • 在指定日志级别下记录message或变量值。
        • 文本不需要加引号。
        • 多个变量间以英文逗号间隔,多个变量结果输出在同一行中。
      • level可以省略,默认INFO。
        • 有效的日志级别有TRACE、DEBUG、INFO、HTML、WARN。

5.4执行测试

    • Run选项卡→Start
    • 快捷键F8
    • 设置报告存储位置
      • Robot Framework会生成三个文件,分别为output.xml、log.html和report.html。
        • output.xml是以XML格式记录测试结果,阅读起来不够直观,可以使用不同的语言读取XML文件中的测试结果,生成定制化的测试报告。
        • log.html和report.html相对来说要美观得多,log.html偏向于测试日志,记录脚本每一步的执行情况。report.html偏向于测试报告,总体展示测试用例的执行情况。通过浏览器打开log.html文件。
      • Run→Arguments
        • -o 路径\output.xml -l 路径\log.html -r 路径\report.html
    • 控制台汉字乱码
      • 修改python\lib\site-packages\robotide\contrib\testrunner\testrunner.py中的latin1为mbcs
        • mbcs(Multi-Bytes Character Set):多字节字符集
        • 根据系统自动显示为本国语言的字符,在中文系统下表示GB2312
      • 重启ride

5.5创建变量、列表、字典

    • ${变量名} set variable  变量值
      • $开头表示变量,不论数据是否使用[ ]、{ }
      • 变量不区分大小写,但不全是,最好一致
    • ${列表名} create list  值1 值2 值3 …
      • 数据中不需使用[ ]
      • 一个单元格一个数据,每个元素自动转字符串
      • 循环访问时建议将$换为@
    • ${字典名} create dictionary 关键字1=值1 关键字2=值2 ...
      • 数据中不需使用{ }
      • 一个单元格一对数据,每个元素值自动转字符串
      • 循环访问时建议将$换为&
    • 输出
      • 使用${变量/列表/字典名}
      • 结果为字符串形式

 

    • 查看和转换变量的数据类型
      • ${结果变量} evaluate type($变量名)
        • 变量名不能再加{ }
        • evaluate表示执行python表达式,并返回执行结果
      • ${结果变量} evaluate int($变量名)+-*/等操作表达式

 

5.6if语句

    • run keyword if 表达式 关键字 命令的参数1 参数2…
      • 表达式可以用
        • 0<=${变量名}<60的形式
    • ${变量名}    run keyword if    关键字    evaluate    表达式
      • 执行表达式,将结果存入变量
    • ${变量名} run keyword if 关键字1 set variable 值1 ELSE IF 关键字2 set variable 值2 … ELSE set variable 值n
      • ELSE IF需要大写,中间有空格。
      • 语句写在一行。

 

5.7for循环

    • 不支持while
    • 不支持多层(含两层)循环,只能重新定义关键字
    • :for ${变量} IN 值1 值2 值3

语句

      • 冒号不能省略
      • IN建议大写
      • 语句必须从第二列单元格写起
    • :for ${变量} IN RANGE 初值 终值

语句

      • IN RANGE建议大写,放在一个单元格中,中间有空格
      • 初值可以省略,默认从0开始
      • 初值和终值放在不同单元格中
      • 终值不被使用,而是到终值-1

    • 自定义关键字
      • 右击测试套件→New User Keyword
      • 可以设置进入的参数

    • exit for loop
      • @{列表名} create list 值1 值2 …

:for ${变量名} IN @{列表名}

  语句

  run keyword if '${变量名}'=='值' exit for loop

        • 建议使用@{列表名},字典使用&{字典名}
        • '${变量名}'=='值'
          1. 都要加引号
        • exit for loop可以根据条件退出循环
    • continue for loop
      • 提前进入下一轮循环

6、发送请求与处理响应

6.1创建会话

    • create session 会话名 url地址
      • 返回session对象,无需存储结果
      • url地址中携带http、域名或IP、端口号
        • 如http://wthrcdn.etouch.cn

6.2发送请求

使用 聚合数据  的天气预报接口举例

    • get请求
      • ${响应结果} get request 会话名 /路径?参数名=值
      • ${字典名} create dictionary 参数1=值1 参数2=值2

${响应结果} get request 会话名 /路径 params=${字典名}

        • params关键字不能省略

第一种传参:

 

 第二种传参:

    • post请求
      • &{headers字典名} create dictionary content-type=application/x-www-form-urlencoded

${响应结果} post request 会话名 /路径 data=${字典名} headers=${headers字典名}

        • 需将content-type存入headers,有时候不加会出错
        • data不能换成params

6.3处理响应数据

    • 获得响应正文
      • ${响应结果.content}
        • 二进制编码
      • ${响应结果.text}
        • unicode码形式的正文
      • ${响应结果.content.decode("utf-8")}
        • 转码为utf-8
      • json格式
        • ${json变量} to json ${响应结果.content} pretty_print=True
          1. 美化json显示
            1. pretty_print=True
      • 获取json中的的项
        • ${变量} get from dictionary ${json变量} 字典关键字
          1. get from dictionary表示根据字典关键值取值
          2. to json是不能使用pretty_print=True

 去掉美化显示

 

    • 获得响应状态码
      • ${响应结果.status_code}

log    ${res.status_code}

    • 获得响应cookies
      • ${响应结果.cookies}
        • 返回RequestsCookiesJar对象
        • 结果是字典形式,Cookie与for间的内容为cookies参数与值
      • ${响应结果.cookies}[参数名]
        • 获得某个cookies参数的值
        • 参数名区分大小写
        • 参数无需引号
      • ${cookie} get from dictionary ${响应结果.cookies} cookies参数名
        • 将取到的cookies存到自定义cookie变量

    • 获得响应头
      • ${响应结果.headers}
        • 也可在${响应结果.headers}中取到cookies
        • ${cookie} get from dictionary ${响应结果.headers} Set-cookie
          1. Set-cookie一般是关键字
        • ${cookie} fetch from left ${cookie} 右边的分割字符串
          1. 根据指定字符串拆分,然后去左边的串,结果重新存储
          2. 需要导入String包
    • 发送cookies数据
      • ${响应结果} get request 会话名 /路径?参数=值&cookie参数名=值

6.4正则表达式查找数据

    • ${结果} get regexp matches 源字符串 (?i)正则表达式 1
      • 需要导入String包
      • 源字符串必须是字符串格式
        • 如${响应结果.text}
      • (?i)
        • 忽略大小写
      • 正则表达式需要使用( )包含
        • 一对( )一个模式
      • 1表示匹配第几个模式,且只输出匹配到的字符串
      • 结果是列表形式
      • ${结果}[0]
        • 获得结果列表中的第1个
        • 结果是字符串形式

6.5变量转存

    • ${结果} convert to string 源变量
      • 将变量转换为字符串
      • 变量严格区分大小写

7、断言

    • ${变量} Should Be Equal 变量1 变量2 断言失败消息

ignore_case=True

      • 判断是否相等,变量1相当于实际结果,变量2相当于预期结果
      • 返回值接收变量可以省略
        • 断言成功时返回None,否则无返回值
        • 输出日志
          1. 断言失败信息+变量1!=变量2
      • ignore_case=True
        • 表示忽略大小写
    • ${变量} Should Contain item1 item2 断言失败消息

ignore_case=True

      • 断言item1中是否包含item2
        • 通过时返回None,否则无返回值
        • 失败时,输出断言失败消息与失败原因
    • ${变量} Should Match Regexp 变量1 (?i)left正则表达式模式right 断言失败消息
      • 搜索变量1中匹配正则表达式的字符串
        • (?i)表示忽略大小写
        • left表示模式左边的字符串,right表示模式右边的字符串
        • 模式一般需要使用( )包含,一对( )是一个模式
      • 若匹配,则返回列表,第一个元素是原数据,后面的元素是匹配到的数据
        • 若不匹配,则输出断言失败消息+失败原因
      • ${变量} Should Match Regexp 变量1 \\d{6}
        • 搜索变量1中一开始的连续6个数字字符串

8、参数化

8.1列表参数化

    • 获得省或直辖市的名称
      • ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince
    • 断言失败继续运行
      • ${断言的结果变量} run keyword and continue on failure 断言

8.2文件数据参数化

    • 创建模块,至少定义函数,建议使用参数和返回值。
    • 将py文件(即自定义库)拷贝到Python\Lib\site-packages下,在RF用导入Library的方式导入。
    • 在用例中直接使用返回值、函数名、参数。
    • 使用循环处理行、列数据。

9、命令行运行

    • 查找\Python\Scripts中是否有pybot.bat,如果没有,自行创建,输入:

@Echo off

python -m robot.run %*

    • 运行测试
      • pybot  test.robot
        • 运行指定文件
      • pybot *.robot
        • 运行当前目录下以.robot为后缀名的测试文件
      • pybot test_a
        • 运行当前test_a目录下的所有用例
      • pybot ./
        • 运行当前目录下的所有的测试文件


http://chatgpt.dhexx.cn/article/DdoGQ0ZT.shtml

相关文章

python+requests+pytest 接口自动化框架(演示)

框架代码已封装 小白 3行代码即可实现接口自动化 1 调用请求 2 在yaml文件中写测试用例 3 运行效果 日志文件 控制台也有对应日志 后期会一点点更新 框架的搭建

自动化框架搭建面试题

面试 1、接口自动化和web自动化有多少case ?覆盖率是多少?全部执行完需要多久? 2、接口自动化测试怎么做? web自动化测试怎么做? 3、什么是POM模式?为什么要使用它? 4、说说你对数据驱动和关键字驱动的理解? 5、web自动化测试用例如何设计?如何提高web自动化用例…

手把手教你从0到1搭建web ui自动化框架(python3+selenium3+pytest)

-前期准备 -环境 -实战: 从0开始 前期准备 为更好的学习自动化框架搭建&#xff0c;你需要提前了解以下知识&#xff1a; python基础知识 pytest单元测试框架 PO模式 selenium使用 环境 本次我们自动化环境为&#xff1a; macpython3selenium3pytest6.2.4 (不管是win还是mac&…

自动化测试框架总结

目录 1. 单元测试框架 2. Web自动化测试框架 3. iOS自动化测试框架 4. Android自动化测试框架 1. 单元测试框架 几乎所有的主流语言&#xff0c;都会有其对应的单元测试框架,下面简单介绍一下python,java,C#三种语言的常见单元测试框架 1.1 Python python常见单元测试框架…

自动化框架到底是什么?

如今&#xff0c;随着敏捷和 DevOps 软件方法论的发展&#xff0c;以及企业寻求更快发布和高质量产品的需求&#xff0c;它需要比手动测试方法更快&#xff0c;更高效的软件测试方法。微型&#xff0c;小型和中型企业&#xff08;SME&#xff09;使其测试过程自动化变得越来越必…

UI 自动化框架对比2

1、pytest 在开始本文之前&#xff0c;我想跟大家澄清两个概念&#xff0c;一个是测试框架一个是测试工具。很多人容易把他们搞混了&#xff0c;测试框架是诸如 Unittest、Pytest、TestNG 这类&#xff0c;而测试工具指的则是 Selenium、Appium、Jmeter 这类。 测试框架的作…

APP自动化简单理解(在python中实现简单的app自动化框架)

一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言&#xff0c;应用层是java&#xff0c;所以需要jdk 2、安装SDK&#xff0c;配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&…

UI自动化框架如何设计及搭建?

目录 UI自动化框架 自动化原则&#xff1a; 如何减少自动化维护成本&#xff1f; UI自动化框架优化方案&#xff1a;&#xff08;在不增加维护成本前提下&#xff09; UI自动化脚本可分为3种&#xff1a; 已经实现自动化的模块可以不做手工测试了吗&#xff1f; UI自动化…

接口自动化框架

接口自动化框架讲解 框架结构 接口测试框架的结构如下图所示&#xff1a; 接口测试框架的结构说明&#xff1a; - API用于封装被测系统的接口&#xff08;用requests模块封装的请求方法&#xff09; - TestCase将一个或多个接口封装成测试用例&#xff0c;并使用UnitTest管…

什么是自动化框架?

前言 无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“…

接口自动化框架搭建

1.自动化测试流程 -- 需求分析。需求文档&#xff0c;接口文档&#xff0c;抓包接口 -- 测试计划。通常包含项目的进度&#xff0c;是否自动化&#xff0c;优先级 -- 测试用例&#xff08;是从手工测试提取出来的&#xff09; -- 用例评审 -- 执行测试。&#xff08;写代码…

2023最全自动化测试框架讲解,不会真不行!

无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“框架”…

【测试开发】几种常见的自动化测试框架

几种常见的自动化测试框架 在软件测试领域&#xff0c;自动化测试框架有很多&#xff0c;这里主要介绍几种常用的自动化测试框架。 1.pytest pytest 是 Python 的一种单元测试框架&#xff0c;与 Python 自带的 unittest 测试框架类似&#xff0c;但是比 unittest 框架使用起…

【自动化框架】

自动化测试框架就是&#xff1a;为了对一个指定的系统做自动化测试而封装的一个半成品&#xff0c;自动化测试攻城狮可以调用这个半成品封装好的方法去实现一个指定系统的自动化测试。 根据驱动模式不同自动化测试框架分为四种模式&#xff1a; (1) 数据驱动框架 (2) 关键字…

常见的主流自动化测试框架,这5种能帮到你很多

今天我们要向大家介绍的是常见5种主流自动化测试框架&#xff0c;包括优缺点等内容&#xff0c;供大家参考学习。 1.ATF 自动化测试框架AutoTestFramework是B/S架构框架&#xff0c;可实现Selenium等多种自动化测试全流程、团队化管理的高级框架平台&#xff0c;通过集成自动化…

【自动化测试】自动化测试框架与工具

文章目录 1&#xff09;什么是自动化测试框架&#xff1f;1.1 什么是框架&#xff1f;1.2 什么是自动化测试框架&#xff1f;1.2.1 优点&#xff1a;1.2.2 框架的基本组件1、需要配置文件管理&#xff1a;2、业务逻辑代码和测试脚本分离3、报告和日志文件输出4、自定义的库的封…

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

本自动化测试框架采用python unittest 的基础来搭建&#xff0c;采用PO模式、数据驱动的思想&#xff0c;通过selenium来实现WEB UI自动化&#xff0c;通过request来实现接口自动化。移动终端的自动化也可在该框架基础上去构建补充。 目录 总体框架PO模式、DDT数据驱动、关键字…

Linux必备的小技巧——查看历史操作和屏显信息

通常在linux查看历史操作信息&#xff0c;都是查看日志文件&#xff0c;Linux的日志文件一般都保存在/var/log文件夹下&#xff1a; 用如下命令即可查看&#xff1a; cat filename 查看日志&#xff0c;会打开整个文件&#xff0c;直接跑到最后面tac filena…

linux下安装CUDA和cudnn

linux下安装CUDA和cudnn 2、安装CUDA10.1 在CUDA官网选择系统对应的版本下载CUDA 我的系统是Ubuntu18.04 64位&#xff0c;我选择下载最新版本的CUDA10.1&#xff1a; 输入以下命令安装CUDA sudo sh cuda_10.1.105_418.39_linux.run 显卡驱动已在上面安装了&#xff0c;这里一…

Linux和其他操作系统的区别

前言 这是我听老师讲课做的笔记,考试要看的。 这是视频地址 作者&#xff1a;RodmaChen 关注我的csdn博客&#xff0c;更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别Linux和Unix操作系统的区别 Linux和windows的区别 1.免费与收费 Windows 平台: Window…