想拥抱"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 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} 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 : 特斯汀学院 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选择等等,都可以通过后台私信交流。需要学习资料或者帮忙修改简历也可以私信!!也可百度搜索“特斯汀软件测试腾讯课堂”或关注公众号“特斯汀软件测试”,里面涵盖很多精彩免费视频或干货知识

编辑于 2022-05-12 14:11