一、说明

Python3----网上很多文章都是用Python2,Robot Framework的部分文档没更新也直接写着不支持Python3(如RIDE does not yet support Python 3),但事实上Robot Framework下的所有项目的最新版本都是支持Python3.6+了的,反倒是Python2以后不久可能就不支持了(如RIDE 1.7.4 THIS IS THE LAST RELEASE SUPPORTING PYTHON 2.7)。

Robot Framework----Robot Framework是一个开源的自动化框架。更本质一点就是可以把你编写好的函数导出来,然后像写存储过程一样写代码,达到降低难度的目的。比如你在python文件中写好了一个函数login_system(username,password),然后Robot Framework就可以导出为Login System,别人写脚本时就可以写成Login System username password。

RIDE----RIDE是使用wxPython库编写的Robot Framework的图形界面。Robot Framework的使用者仍是程序员,而代码本就是程序员所写的现在又要多封装一层多学一套语法不仅没有降低难度反而增加了工作量。所以仅就Robot Framework而言个人觉得没什么值得称道的地方,加上RIDE有了图形界面则可以算一套工程化的管理工具,所以一般讲Robot Framework其实也是讲通过RIDE使用的方式。

二、安装

Robot Framework github地址:https://github.com/robotframework/robotframework

RIDE github地址:https://github.com/robotframework/RIDE

安装方法千千万,pip大法最简单。直接使用pip安装ride就可以了,Robot Framework、wxPython等依赖库都会自动安装好。

pip install robotframework-ride

进入自己当前python环境的Scripts目录(比如我这里是F:\PyChram\robot\Scripts)使用以下命令启动ride:

python ride.py

启动后界面如下,常规的一个窗口程序界面。

三、使用

我们说ride是一个简单的小工具,就不一个个菜单一个个功能地介绍了,直接说它一般怎么用。

我们前面说Robot Framework的功能就是把代码文件中的函数抽象成所谓的关键字,我们直接看这主要功能如何实现。

3.1 准备好代码文件

将以下代码使存到桌面,并命名为test_lib.py

import urllib.request

def get_url_source_code(url):
"""这个函数的功能是获取传来的url页面的代码并打印
url----形如https://www.baidu.com"""
request_obj=urllib.request.Request(url)
response_obj=urllib.request.urlopen(request_obj)
html_source_code=response_obj.read().decode('utf-8')
print(html_source_code) # 这个main只是用于运行演示,作为Robot Framework的库是不需要的
if __name__ == "__main__":
url = "https://www.baidu.com"
get_url_source_code(url)

我们先看一下直接运行的结果,在main中传入的百度的url,然后打印出返回的页面的代码。

3.2 新建项目及测试用例

主菜单----File----New Project

主要是填写项目名称(比如我这里是test),其他默认即可。Type/Format这种东西无非是存放格式的区别不必太在意。

在新建的项目上鼠标右键---New Test Case---输入测试用例(我这里是testCase1)名称点击OK。

经以上步骤项目和测试用例都已创建好,当前界面如下:

3.3 导入自定义库函数

对我们这里页言,自定义库就是前面的test_lib.py,库含数就是其中的get_url_source_code。

左侧窗格选中项目,右侧窗格选中Edit选项卡,点击Library按钮

通过Browse选中我们的test_lib.py,其他不用填,点击OK。

回到主窗口上可以看到导入了一个库(如果呈红色说明导入报错,一般是脚本代码有问题,可借助cmd窗口的输出进行定位)

在上边界面中使用F5键,唤出关键字搜索对话框,Source中下拉选中test_lib。

如无意外,可以看到如下图我们脚本中的get_url_source_code被抽取成了Get Url Source Code关键字,注释这些也都有展现在上面(url那行没换行是\n和\r\n的问题)。

3.4 使用自定义库函数

经过前面几步我们已经将自己写的函数导入了进来,下来看如何调用,这步也是Robot Framework(或者RIDE)的主要用法。

回到主窗口,左侧窗口选中测试用例,右侧窗口选中Edit选项卡,界面如下。

测试用例就真的是测试用例,其中的1、2、3、4、5就是测试步骤,其中第一列是关键字(即本质上的函数),其后各列用于输入参数。

我们输入我们要使用的关键字“Get Url Source Code”(可使用Ctrl+Alt+Space获取补全提示),此时界面如下图。

一列为粉红底色,表示需要一个参数;其余后续列为灰色表示不使用(但如果想的话可以把自己的注释写在这些灰色格子上)。

我们把参数设置成“https://www.baidu.com”,此时再看界面如下,白色底表明填写上没有错误。

如果自己的测试用例后续还有各步,就继续在2、3、4、5那些行继续写下去即可。

3.5 运行测试用例及查看其报告

运行很简单,左侧窗格钩选要运行的测试用例,右侧窗格切换到Run选项卡,点击Start按钮。

底部窗格的输出其实就只是我们在get_url_source_code函数中的打印。

点击Report和Log按钮查看生成的报告,可以看到主要仍旧只是把打印记录到文件里。

四、一些相关性问题讨论

4.1 很多教程都介绍SeleniumLibrary到底在介绍什么?

可以看到网上很多教程不是像我们上边介绍如何导入和使用自己的代码,而是介绍安装SeleniumLibrary的库(旧版叫Selenium2Library现已迁移到SeleniumLibrary,Selenium2Library仍可安装但事实上仍是引用SeleniumLibrary),然后使用里边的Open Browser关键字(函数)使用浏览器打开某个网页(例如百度首页)。

安装直接使用pip安装即可:

pip install robotframework-seleniumlibrary

导入时教程都会说直接输入SeleniumLibrary即可,而不像我们前面3.3说的那样得点击“Browse”选择具体的文件。

这并不是什么玄学,只要输入名字RIDE就能自动把库导进去了,实际上如果RIDE看到输入的只是一个名字而不是路径,就会到当前启动ride所用python的Lib/site-packages目录下寻找同名文件夹导入。

也就是说很多教程中SeleniumLibrary的例子,其作用就只是演示如何导入第三方库;而实际上导入第三方库是没多大用,很多人都介绍个人感觉只是人云亦云的行为。

因为如果是程序员那肯定愿意直接写代码而不是RIDE来调用库;而如果是一般的维护人员,一般也只会导入自己企业的针对自己业务写好库其他第三方库他也不会用;再则除非SeleniumLibrary这种针对Robot Framework写好的库,不然很多第三方库(比如requests/scapy等)的方法是封装于类中的,并不能抽取成关键字。

4.2 如何导入类中的方法?

在前面3.3小节中我们导入的是直接定义的方法get_url_source_code,在上面一小节最后我们又说类中的方法不能直接被RIDE抽取成关键字。

那么类中的方法到底能不能被抽取成关键字呢,不能的话是因为什么,能的话该如何操作?

首先可以肯定类中的方法不能直接抽取成关键字但确实可以间接抽取成关键字的,比如我们前面提到的SeleniumLibrary的Open Browser本身就是一个类中的方法。

不能直接抽取的原因也在上图中展示了,那就是类的方法总要有一个参数self,如果直接抽取出来self这个参数不知道该传什么。

SeleniumLibrary中的做法是使用一个@keyword注解,然后在其他地方又做了一些处理。这里我并没有研究得很清楚,即怎么导入类中的方法暂时还不知道。

4.3 Resource是什么?

在Library按钮的下方有一个Resource按钮,这个Resource是什么,和Library有什么区别?

左侧窗格选中项目Test,然后点击New User Keyword。我这里填入“Get Baidu Index Source Code”

左侧窗格选中刚建的Resource,右侧窗格一样是写获取百度首页的代码。

此时我们再新建一个测试用例,可以看到可以直接使用“Get Baidu Index Source Code”关键字

所以到这就清楚了,资源就是已有关键字组合成的新的关键字。我们再来具体看一下在文件上到底长什么样,右侧窗格切换到Text Edit选项卡。

*** Keywords ***节区(包括该行)单独复制出来保存成文件就是Resource File了(如比testResource.txt),长这样的文件就可以通过Resource按钮导入到RIDE中了。

另外在左侧窗格还可以看到一个External Resources的东西,这部分的Resource是和项目无关的,添加到这里的Resource即便新建了一个项目还是会列在那里;而通过Resource导入的Resource只能在当前项目中使用。

不过External Resources并不会自动导入到新建项目的,而是每个项目都得再通过Resource按钮再导入一遍才能使用,感觉这是一个External Resources的实现Bug。

4.4 数据驱动是什么?

听说RIDE右下方的Metadate还能数据驱动的功能,“数据驱动”这么高大上的名字没听说过搞得自己都慌了,赶紧研究一番。

然后看了半天,所谓数据驱动就是把测试载荷全写到文件中使用时从文件遍历载荷;而具体到RIDE中,就是可以让你加几个变量,然后在编写testCase时可以使用这些变量。

一如动辄AI、大数据,我总觉现在搞计算机的越来越博(会)学(吹)多(牛)识(逼),一个司空见惯的东西都能给换个这么有文采的名字,完后还能靠个名字加东拉西扯把人给唬得一愣一愣的。

Python3+Robot Framework+RIDE安装使用教程的更多相关文章

  1. Robot Framework 的安装和配置(转载)

    Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...

  2. 《转》Robot Framework 的安装配置和简单的实例介绍

    Robot Framework 介绍 Robot Framework 是一款基于 Python 的功能自动化测试框架.它具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进 ...

  3. Robot Framework 的安装配置和简单的实例介绍

    Robot Framework 介绍 Robot Framework 是一款基于 Python 的功能自动化测试框架.它具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进 ...

  4. Robot Framework的安装、更新与卸载

    Robot Framework的安装.更新与卸载 一,安装RF前的准备 一般就三种执行环境 Python, Jython (JVM) 和 IronPython (.NET): 安装python: #T ...

  5. Robot Framework 的安装和配置

    Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...

  6. python3+Robot Framework+PyCharm自动化测试框架设计

    关于自动化测试框架的设计,笔者在前面的随笔里面有介绍和总结,这里结合实际的项目例子做个demo,环境部署参考笔者的的随笔<python3+Robot Framework+PyCharm环境部署及 ...

  7. python3+Robot Framework+PyCharm环境部署及执行脚本

    Robot Framework是一个非常优秀的开源关键字驱动自动化测试框架,目前已经支持python2和python3,但是GUI界面RIDE只支持python2,但是python的未来是python ...

  8. Robot Framework的安装

    一.安装环境:Windows 64位操作系统64位2.7版本Python 二.简要步骤:1. 安装Python(RF是基于python 的,所以需要有python环境):2. 安装wxPython ( ...

  9. Robot Framework 环境安装(一)

    1.安装python:https://www.python.org/2.安装python的第三方库:robotframework (1)检查是否支持pip命令. (2)robotframework安装 ...

随机推荐

  1. Spring Boot 使用 JWT 进行身份和权限验证

    上周写了一个 适合初学者入门 Spring Security With JWT 的 Demo,这篇文章主要是对代码中涉及到的比较重要的知识点的说明. 适合初学者入门 Spring Security W ...

  2. Vue递归组件实现层层嵌套显示数据

    问题来自朋友...记录一下 需求是表格头部后端返回的数据中是不确定的 n维数据,表头存在于 listVo 字段中,如何实现层层显示呢? 温馨提示,以下内容为5张大图,请打开 WIFI 享用... 以下 ...

  3. WampServer出现You don’t have permission to access/on this server提示

    WampServer出现You don’t have permission to access/on this server提示 本地搭建WampServer,输入http://127.0.0.1访问 ...

  4. OAuth 2.0 的四种授权模式

    RFC 6749 OAuth 2.0 的标准是 RFC 6749 文件.该文件先解释了 OAuth 是什么. OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.......资源 ...

  5. 十、lambda表达式、内置函数之filter、map、reduce

    lambda表达式   学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'ale ...

  6. ThinkPHP5框架引入的css等外部资源文件没有生效

    静态资源文件一般是放在public目录里,不只是css,只要是静态资源文件都没有显示出来. (更好的阅读体验可访问 这里 ) 问题陈述 文件结构 文件内容 三个文件分别为:Index.php.test ...

  7. AXIOS 的请求

    AXIOS 本质上等同于json 传值 1.引用 //引入axios import Axios from 'axios' //将axios挂载到 Vue原型上 Vue.prototype.$https ...

  8. django orm 基于双下划线的跨表查询

    一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...

  9. MySQL小测试

    <> 2.创建一个字符集为utf8的数据库,将数据库字符集修改为gbk create database db1 charset='utf8'; alter database db1 cha ...

  10. Django-Model操作数据库

    查询 models.UserInfo.objects.all() models.UserInfo.objects.all().values('user') #只取user列 models.UserIn ...