RF框架介绍、RIDE认识+RF环境搭建+自动化测试概述、RF的接口自动化测试、RF的内置测试库【看Robot都有哪些库,最靠谱的方法就是直接上官网查看。
官网地址为:https://robotframework.org】、自定义RF
持续集成自动化测试、DatabaseLibrary库
1 Robot Framework框架介绍
Robot Framework的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD)。
RF是使用关键字驱动的测试方法
1.1 RF特性
- 易于使用[表格式语法],统一测试用例格式。
- 重用性好,利用现有关键字组合新关键字。
- 易于阅读,结果报告和日志采用HTML格式。
- 平台和应用程序是独立的。
- 易于扩展,提供简单的库API,用户可以自定义基于python或java的测试库。
- 易于集成,提供命令行接口和基于XML的输出文件。
- 功能全面,为Selenium提供Web测试,Java GUI测试,运行进程,Telnet,SSH等支持。
- 可以使用关键字驱动、数据驱动和行为驱动开发(BDD)完成。
- 内置对变量的支持,特别适用于不同环境的测试。
- 提供tag标签来分类和选择案例执行。
- 实现与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录。
- 提供测试用例和测试套件级别的设置和拆卸。
- 模块化架构支持创建测试,即使对于具有多种不同接口的应用程序。
1.2 RF框架
RF是一个通用的,应用程序和技术独立的框架,具有高度模块化的架构。
该测试数据是简单,易于编辑表格格式。启动RF时,它会处理测试数据,执行测试用例并生成日志和报告。核心框架对测试中的目标一无所知,与它的交互由测试库处理。库可以直接使用应用程序接口,也可以使用低级测试工具作为驱动程序。
Robot Framework自动化测试框架的组成:
1.3 如何创建一个自动化测试框架
- 创建测试项目:测试项目一般创建type选择目录。
- 创建测试套件:测试套件与测试项目一致。
- 创建测试用例:创建好的测试条件,右击,选择测试用例,输入用例名称。
type的选择:测试项目(directory)-测试套件(file)-测试用例。测试用例只能放在file类型的测试套件下。
fomat的选择:比较推荐robot和txt,在安装VS code的插件后查询.robot文档会自动语法高亮,便于维护和版本管理。
1.4 Robot Framework基础关键字
基础关键字 |
说明 |
如何搜索 Robot Framework 的关键字 |
Tools->Search Keywords或F5快捷键 |
关键字log |
输出内容 |
如何在用例中定义一个变量 |
Set Variable |
如何快速查询某一个关键字的 API 说明 |
选中关键字,同时按Ctrl+Alt |
如何快速补全关键字 |
Ctrl+Alt+空格键 |
如何定义一个列表 |
@{list1} Create List |
如何定义一个字典 |
&{Dict1} Create Dictionary |
如何拼接两个字符串 |
Catenate |
如何使用 for 循环 |
:FOR 变量 in 列表或字典 |
如何中断 for 循环 |
Exit For Loop If |
Run Keyword If 判断的使用 |
逻辑判断的关键字,如果满足某一个判断条件,就会执行关键字 |
Comment 关键字的使用 |
注释,注释的脚本不会被执行 |
Return From Keyword 和 Return From Keyword If 关键字的使用 |
脚本执行到该关键字后,会直接返回,不会再执行后面的脚本 |
1.5 robot Framework断言关键字
断言关键字 |
说明 |
Should Be Equal |
用来判断实际结果是否和预期结果相等 |
Should Be True |
用来判断返回值是否为True |
Should Contain |
用来判断某个字符串中是否包含了我们预期需要的字符或者字符串 |
Should End With |
用来判断某个字符串是否以我们预期指定的字符串来结束 |
Should Be Empty |
判断是否为空,若不为空,则执行失败 |
Should Start With |
判断某个字符串是否以预期执行的字符串开始,若以指定的字符串开头,则执行成功,否则执行失败 |
Should Not Start With |
与 Should Start With 刚好相反, 若以指定的字符串开头,则执行失败,否则执行成功。 |
Should Match |
判断某个字符串是否与预期指定的字符串相匹配,若可以匹配,则执行成功,否则执行失败 |
Should Not Match |
与 Should Match 刚好相反,若字符串匹配,则执行失败,否则执行成功 |
Should Contain X Times |
|
Should Be Equal As Integers |
以整数的形式来进行比较 |
Should Be Equal As Strings |
以字符串的形式来进行比较 |
Should Be Equal As Numbers |
以 number 的形式来进行比较 |
Should Not Be Equal |
与 Should Be Equal 用法相反,当带比较的两个值相等时,执行失败,否则执行成功 |
Should Not Be Empty |
与 Should Be Empty 用法相反,若为空,则执行失败 |
1.6 BuiltIn库剩余关键字
转换类型关键字 |
说明 |
Convert To Binary |
将指定的内容转换为二进制形式 |
Convert To Boolean |
将指定的内容转换为布尔类型 |
Convert To Bytes |
将指定的内容转换为字节数 |
Convert To Hex |
将指定的内容转换为十六进制形式 |
Convert To Integer |
将指定的内容转换为 Integer 形式 |
Convert To Number |
将指定的内容转换为 Number 形式 |
Convert To Octal |
将指定的内容转换为八进制形式 |
Convert To String |
将指定的内容转换为字符串形式 |
Get类型关键字 |
说明 |
Get Count |
获取某个字符串包含指定字符或者字符串的次数 |
Get Length |
获取指定字符串的长度 |
Get Time |
获取时间 |
Get Variable Value |
获取指定变量的值 |
Get Variables |
获取所有的环境变量 |
2 环境准备
2.1 Python安装
- 1、下载python安装包[一般建议官网进行下载安装]:https://www.python.org/
- 2、双击打开下载好的安装包,按照安装引导一步步安装完成,可参考:https://www.zhihu.com/question/269317143
- 3、安装完成后,在控制台输入python -V验证python是否安装成功。
- 4、python安装后,通过命令:pip list查看pip版本,如果版本低于20,通过命令:python -m pip install --upgrade pip升级pip,便于后面通过pip安装我们所需的包。
#pip版本过低时,升级pip python -m pip install --upgrade pip
2.2 robotframework-ride安装
由于不同版本的ride兼容性不一样,优劣势不一样,具体可参考:https://www.cnblogs.com/leozhanggg/p/11698862.html。在这里我们使用1.7.3.1版本。在控制台使用命令安装:pip install robotframework-ride==1.7.3.1。安装成功后,使用命令:pip list 可以在列表中查看。
#支持python3.6及以上,且当前该版本相对稳定 pip install robotframework-ride==1.7.3.1 pip list
2.3 wxPython、robotframework安装
RIDE GUI是wxPython实现的,而使用RF框架又要依赖robotframework库。在安装robotframework-ride的时候,pip已经给你安装好了。如果通过命令pip list没有看到wxPython以及robotframework,可以手动安装,通过命令:pip install wxPython==4.0.7.post2 以及pip install robotframework==3.1.2 安装,安装后可以在pip list里面查看到。
#RIDE GUI是wxPython实现,RF框架依赖库robotframework pip install wxPython==4.0.7.post2 pip install robotframework==3.1.2 pip list
2.4 启动RIDE
通过以上步骤就部署好robotframework基础框架了,我们打开python的安装目录下的Script目录,会发现多了一个ride.py和robot.exe文件。可以创建桌面快捷方式,后续启动。
ride.py就是RIDE GUI的启动程序,我们可以双击启动一下看看是否能够打开RIDE的GUI界面,如果打开后出现下面的界面,说明RIDE工具已经安装成功了。
PS:[针对3.7.0的python版本]在使用过程中中文会出现乱码的情况。比如我们的用例名是中文,执行用例,日志里会乱码。 解决办法:通过命令:where python查看python安装路径,在安装路径下找到Lib/site-packages/robotide/contrib/testrunner/testrunner.py,477行修改成mbcs。
2.5 安装常用库
RobotFramework全部内置标准库及第三方库介绍参考:https://blog.csdn.net/weixin_40326608/article/details/101058416 。
我们常用的第三方外置库包括以下:
1、安装requests,主要用于Get、Post等请求。
cmd>pip install requests (支持第二步,否则RF引入RequestsLibrary库会报错) cmd>pip install -U robotframework-requests(-U 升级原来已经安装的包,不带U不会装新版本,带上U才会更新到最新版本。)
2、安装mysql,用于对数据库进行操作。
cmd>pip install robotframework-databaseslibrary cmd>pip install PyMySQL
3、安装ExcelLibrary,用于对表格进行操作。
目前支持python3.7的excellibrary未更新,一直沿用的是python2.X对应的版本,由于语法上的一些不同,也导致了直接通过pip安装会报错,当提示如图所示错误时:execfile(join(dirname(file), ‘ExcelLibrary’, ‘version.py’)) NameError: name ‘execfile’ is not defined
可以通过修改文件,使excellibrary适用与3.X版本。
首先下载robotframework-excellibrary-0.0.2[建议下载的所有库都去官网进行下载]:https://pypi.org/project/robotframework-excellibrary/0.0.2/
修改以下几个文件:
#1、robotframework-excellibrary-0.0.2,进入对应的包: A. \robotframework-excellibrary-0.0.2\setup.py #execfile(join(dirname(__file__), 'ExcelLibrary', 'version.py')) exec(open(join(dirname(__file__),'ExcelLibrary','version.py')).read()) B. \robotframework-excellibrary-0.0.2\ExcelLibrary\ExcelLibrary.py 将所有的print xxx 语句修改为 print(xxx) C. \robotframework-excellibrary-0.0.2\ExcelLibrary\__init__.py #from ExcelLibrary import ExcelLibrary #from version import VERSION from .ExcelLibrary import ExcelLibrary from .version import VERSION D. \robotframework-excellibrary-0.0.2\ExcelLibrary\ExcelLibrary.py #from version import VERSION from .version import VERSION #2、文件修改完毕后,cd到\robotframework-excellibrary-0.0.2\路径,通过python setup.py install 安装。 #安装成功后,python路径下在site-packages里可以看到ExcelLibrary包。 cd xx/robotframework-excellibrary-0.0.2 python setup.py install #安装好相应库后,在使用时,只需要import即可使用。
3 RF的接口自动化测试
数据驱动测试的核心:测试数据与测试脚本分离,实现测试脚本参数化,提高测试脚本的可重用性。
接口自动化,主要用到了get request和post request。
基于RF的接口测试库,主要包含requests和requestsLibrary(robotframework-requests)。
接口测试:系统之间交互的接口,或者某个系统对外提供的一些接口服务。
cmd>pip install requests (支持第二步,否则RF引入RequestsLibrary库会报错) cmd>pip install -U robotframework-requests(-U 升级原来已经安装的包,不带U不会装新版本,带上U才会更新到最新版本。)
requestsLibrary(robotframework-requests)关键字:
- Create Session:创建一个session,连接某个服务器;
- Create Ntlm Session:也是创建一个session,只不过加上了域、用户名、密码用于NTLM认证;
- Get Request:通过GET方式发起请求;
- Post Request:通过POST方式发起请求;
- Head Request:发送一个HEAD请求;
- To Json:将文本转换成json对象;
4 RF的内置测试库
RF内置库官网文档:http://robotframework.org/robotframework/
常用的测试库:
- RF自带的测试库-python目录下:\Lib\site-packages\robot\libraries。
- RIDE加载内置库时,显示的关键字读取路径-python目录下:\Lib\site-packages\robotide\lib\robot\libraries。
RF出了新版后,RIDE未及时更新,导致新的关键字不能被RIDE识别,此时需要把RF自带的测试库下的文件复制到RIDE内置库的取值路径。