想拥抱"RF"?那就放开RIDE吧,你值得拥有更好的
- RF及RIDE简介
- Pycharm RF环境搭建
- Pycharm RF自动化测试实战
- Pycharm RF allure报告生成
1. RF及RIDE简介
RobotFramework
Robot Framework 是一个基于 Python 的、可扩展的关键字驱动自动化框架,用于验收测试、验收测试驱动开发 (ATDD)、行为驱动开发 (BDD) 和机器人流程自动化 (RPA)。它可用于分布式异构环境,其中自动化需要使用不同的技术和接口。
RF框架周围有一个丰富的生态系统,由作为独立项目开发的各种通用库和工具组成。
RF最早由诺基亚开发,并广泛应用于其内部测试工作,2016年由专门的基金组织来维护该项目。
一个老牌的自动化框架能活跃到现在必然有它成功的地方:
- 启用易于使用的表格语法,以统一的方式创建测试用例。
- 提供从现有关键字创建可重复使用的高级关键字的能力。
- 以 HTML 格式提供易于阅读的结果报告和日志。
- 独立于平台和应用程序。
- 提供一个简单的库 API,用于创建可以用 Python 本地实现的自定义测试库。
- 提供命令行界面和基于 XML 的输出文件 ,用于集成到现有构建基础设施(持续集成系统)。
- 提供对测试 Web 应用程序、REST API、移动应用程序、正在运行的进程、通过 Telnet 或 SSH 连接到远程系统等的支持。
- 支持创建数据驱动的测试用例。
- 具有对变量的内置支持,特别适用于在不同环境中进行测试。
- 提供标记已分类和选择要执行的测试用例。
- 实现与源代码控制的轻松集成:测试套件只是可以使用生产代码进行版本控制的文件和目录。
- 提供测试用例和测试套件级别的设置和拆卸。
- 模块化架构甚至支持为具有多个不同接口的应用程序创建测试。
Robot Framework 是一个通用的、应用程序和技术独立的框架。它具有高度模块化的架构,如下图所示:
RIDE
RIDE 是 Robot Framework 测试用例的UI开发环境。在国内大环境下,绝大多数人在想学或者使用RF的时候都想方设法先去装ride。因为历史原因,在早期robotframework和ride因为python2和python3的版本问题,很多时候大家在使用rf框架的时候踩了不少坑,主要是ride环境安装不成功,最终导致放弃rf这么优秀的框架,其实大可不必。有一点,大家要先搞清楚的就是rf和ride是两个不一样的项目,一个是框架本身,也是我们实现自动化的核心工具,另一个只是可能会提供便捷去使用rf的图形界面工具而已,即使没有ride,我们也能很好的去使用rf。这里我提出几个抛弃ride的个人观点:
- ride安装容易踩坑
- ride目前兼容性还有待优化
- ride的界面风格属于“毛坯房”标准
- 对于新手来说,又多了一个工具的学习成本
- ......
综上,如果想要真正学习或者用好robotframework,那么从抛弃ride开始吧!
2. Pycharm RF环境搭建
基础条件:Python3.8+、Pycharm新版社区版、JDK1.8(不要安装高版本)、allure
Setp1: 安装robotframework
# 安装最新版本 pip install robotframework # 升级到最新版本 pip install --upgrade robotframework # 验证安装 robot --version
Setp2: 打开Pycharm安装插件及配置
File-->Settings,进入设置
在插件功能中,查找robot
找到IntelliBo # patched插件,点击INSTALL安装即可。
安装完成后,重启pycharm。
接下来配置robot运行方式。通常来说,可以配置两种方式运行,先进入到Settings中的Tools选项:
执行单个文件:
比如叫run_one,这个名字可以自定义。
Program,填写的是robot可执行文件的完整路径,可以从“+”号后面的文件夹去寻找和确定,通常都是安装在你python目录下Scripts里面。
Arguments,填写:-d report $FilePath$(report指rf默认报告存在的位置)
Working directory,填写:$ProjectFileDir$
执行整个测试套件:
再新建一个用来执行测试套件,点上面的“+”:
在弹出框内输入:
Program同上。
Arguments,填写:-d ../report $FileName$
Working directory,填写:$FileDir$
配置完成后即可运行robot文件了。
Step3:安装必须库
为了满足各类自动化的需求,我们会安装常用的rf库:
- Web自动化测试:SeleniumLibrary
- 接口自动化测试:RequestsLibrary
- APP自动化测试:AppiumLibrary
可以通过命令行方式安装:
pip install robotframework-seleniumlibrary pip install robotframework-requests pip install robotframework-appiumlibrary
也可以通过pycharm安装:
为了实现美丽的allure测试报告,我们还要安装allure-robotframework的库:
准备工作完成,我们即将正式开始robotframework。
3. Pycharm RF自动化测试实战
Robot Framework 脚本定义说明:
选项 | 说明 |
Settings | 1) 导入测试库、 资源文件和变量文件。2) 为测试套件 和测试用例定义元数据。 |
Variables | Defining variables that can be used elsewhere in the test data. |
Test Cases | Creating test cases from available keywords. |
Tasks | Creating tasks using available keywords. Single file can only contain either tests or tasks. |
Keywords | Creating user keywords from existing lower-level keywords |
Comments | Additional comments or data. Ignored by Robot Framework. |
根据模板我们先来个简单的实验:
*** Settings *** Library SeleniumLibrary *** Test Cases *** Baidu Search case Open Browser
http://www.
baidu.com
chrome Input text css:#kw 特斯汀 click button css:#su sleep 5 Close Browser
然后运行:
同时在report文件夹下有一个测试报告:
接下来,我们来一个实战例子,打开特斯汀测试商城,完成部分功能验证:
*** Settings *** Library SeleniumLibrary #定义需要使用的变量 *** Variables *** ${user} 13800138006 ${password} 123456 ${verify} 1111 ${login_url}
http://
testingedu.com.cn:8000/
${login_link} //a[text()="登录"] #主页面登录链接xpth ${user_locator} //*[@id="username"] #登录页面账户名输入框xpath ${password_locator} //*[@id="password"] #登录页面密码输入框xpath ${verify_locator} //*[@id="verify_code"] #登录页面验证码xpath ${login_button_locator} //a[@class="J-login-submit"] #登录按钮xpath *** Test Cases *** Login Open Brower To Home Page Go To Login Page input user name ${user} input password ${password} input verify ${verify} click element ${login_button_locator} sleep 3 Upload Pic click element //div[@class="menu-ul"]//a[text()="个人信息"] click element //*[@id="preview"] select frame //*[@id="layui-layer-iframe1"] choose file //*[@id="filePicker"]/div[2]/input F:\\111.jpg sleep 3 click element //div[@class="saveBtn"] unselect frame click element //input[@class="save"] sleep 3 Add Adress click element //div[@class="menu-ul"]//a[text()="地址管理"] click element //span[text()="增加新地址"] input text //input[@name="consignee"] zxtest666 input text //input[@name="mobile"] 17777777777 select from list by label //*[@id="province"] 湖南省 sleep 1 select from list by label //*[@id="city"] 长沙市 sleep 1 select from list by value //*[@id="district"] 25607 sleep 1 select from list by value //*[@id="twon"] 25609 input text //input[@name="address"] 掌心测试地址 click element //*[@id="address_submit"] sleep 3 Del Adress click element //span[text()="zxtest666"]/../..//a[text()="删除"] sleep 3 #对框架已经实现的关键字进行组合,可以创建自己的关键字 *** Keywords *** Open Brower To Home Page open browser ${login_url} Chrome maximize browser window Go To Login Page click link ${login_link} Input User Name [Arguments] ${user} input text ${user_locator} ${user} Input Password [Arguments] ${password} input text ${password_locator} ${password} Input Verify [Arguments] ${verify} input text ${verify_locator} ${verify}
前面我们看到robotframework的报告不是特别的美观,是时候把它换成allure了。再配置好了allure环境变量及安装完成allure-robotframework插件,我们就可以直接写个运行方法去统一控制执行了。新建一个py文件run.py:
# -*- coding:utf-8 -*- """ # @Time : 2022/5/11 10:17 # @Auth : Mr.掌心 2929184523 # @Company : 特斯汀学院
http://
testingedu.com.cn
# @Function : 请输入模块功能描述 """ import os if __name__ == '__main__': os.system(r'rd /s /q .\output\allure') os.system(r'rd /s /q .\output\report') os.system('robot --listener allure_robotframework demo.robot') os.system('allure generate ./output/allure -o ./output/report --clean')
最后,关于软件测试学习,offer选择等等,都可以通过后台私信交流。需要学习资料或者帮忙修改简历也可以私信!!也可百度搜索“特斯汀软件测试腾讯课堂”或关注公众号“特斯汀软件测试”,里面涵盖很多精彩免费视频或干货知识