Python3+Robot Framework+RIDE安装使用教程

1、说明

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)。html

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

RIDE----RIDE是使用wxPython库编写的Robot Framework的图形界面。Robot Framework的使用者还是程序员,而代码本就是程序员所写的如今又要多封装一层多学一套语法不只没有下降难度反而增长了工做量。因此仅就Robot Framework而言我的以为没什么值得称道的地方,加上RIDE有了图形界面则能够算一套工程化的管理工具,因此通常讲Robot Framework其实也是讲经过RIDE使用的方式。git

 

2、安装

Robot Framework github地址:https://github.com/robotframework/robotframework程序员

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

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

pip install robotframework-ride

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

python ride.py

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

 

3、使用

咱们说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选项卡,界面以下。

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

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

一列为粉红底色,表示须要一个参数;其他后续列为灰色表示不使用(但若是想的话能够把本身的注释写在这些灰色格子上)。

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

若是本身的测试用例后续还有各步,就继续在二、三、四、5那些行继续写下去便可。

 

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

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

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

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

 

4、一些相关性问题讨论

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、大数据,我总觉如今搞计算机的愈来愈博(会)学(吹)多(牛)识(逼),一个司空见惯的东西都能给换个这么有文采的名字,完后还能靠个名字加东拉西扯把人给唬得一愣一愣的。

相关文章
相关标签/搜索