通过实例学习RobotFrameWork - 1

写在前面的话

自动化测试是什么时候开始火的?已经记不清了,只记得08年毕业的时候,QTP和load runner就已经成为了各大民间测试培训组织的必备课,学员们装着盗版的QTP,LoadRunner,在课堂上一遍又一遍虐待着百度的搜索框,然后感觉自己棒棒哒,出了学校,发现实际用到自动化测试的公司并不多。说这话可能有人要捡砖头开拍,北上广深杭这些大地方笔者真的没去工作过,不敢说人家那边自动化测试在行业内的推广最早是什么时候,当时又到了何种程度,只是在作者工作的这个地方,自动化测试时至今日依旧是一个尴尬的存在,抱怨几句,大家都在一股脑的推自动化,可是什么样的项目适用自动化,要用在测试哪个阶段,用到何种程度,却依旧没有个行业标准。大多数的人只看到了自动化测试可以减少人工,就吵着嚷着说自己也要用自动化,说我们是敏捷团队,能让项目加速的都是我们要做的,何其可笑,还是暂且打住这个话题。

闲来看了看当前测试工程师招聘的JD,发现很多公司已经把“能独立搭建并应用自动化测试框架”作为招聘需求。墙里墙外扒拉了一下,发现了RobotFrameWork这个东西,看了一个礼拜大概弄清楚了一点,寻思着就把弄清楚的这一点点先写出来,给同样是菜鸟的少年们看看,也是给自己留个记录。

翻了翻网上关于RobotFrameWork的文章,大部分内容套路都差不多,根据我这几天的研究成果,这次我们直接写个基于测试实例代码分析的RobotFrameWork学习。这个系列的文章我不打算按照正常的套路从安装讲起到如何应用结束,相反,咱们先来看看测试实例,再分析代码,最后看看安装过程。如果看完第一篇,感觉有兴趣,再往下看,没有兴趣就直接看别的就好啦。

闲话不多说了,我们开始。

Robot Framework 是一款由Nokia公司开发,使用Python编写的功能自动化测试框架。凭借其良好的可扩展性,在引入各种资源包后,可用于web功能自动化测试,接口测试,手机app自动化测试,windows app测试以及数据库自动化测试等。相较于其他自动化测试框架,Robot Framework 的最大优势在于:

  1. 完美地将底层大部分操作代码封装成关键字,最重要的是支持使用变量,循环,以及if else逻辑判断。同时,在依旧无法满足测试需求的情况下,支持将多个系统内建的关键字再次封装为用户自定义关键字。

  2. 语法类似自然语言,对于code要求极低,直接使用文本文件作为测试用例。使测试人员将更多地精力放在测试逻辑上。

  3. 良好的测试文档管理结构,包括测试用例管理(分类,有选择地执行),资源统一存放等。同时HTML格式的测试报告具有良好的可读性。

本文一改其他框架介绍文章的结构,不从安装开始,而是借助一个简单的测试实例,通过对测试用例的分析来对robot framwork+selenium2library框架在测试中的应用进行一个初步介绍,在读者感觉此框架真正有用之后,再进行安装,使用的具体介绍。

测试实例的介绍

“…一次一次地折磨Baidu的id=kw,su,你考虑过它们的感受么?”

image

我们这次的待测系统是Orelly 在线图书馆

业务需求如下:

  1. 注册页面的input box未填写时,点击注册按钮,每个文本框下方会出现错误提示信息

  2. 当输入任何信息后,红色的错误提示信息会消失

  3. Email地址栏输入的验证
    a. 单独字母数字特殊符号无法通过
    b. 字符+@无法通过验证
    c. @+字符无法通过验证
    d. 字符+除@外其他特殊字符+字符无法通过验证
    e. 正常的邮件地址可通过验证

  4. 通过何种渠道了解到本站”的拉列表值符合预定义值

  5. 成功注册的happy flow

下面让我们来看一下要实现对上述5点需求的功能自动化测试,RFS的代码量是多少。

首先来看编写RFS自动化测试代码的UI IDE工具 –RIDE,使用RIDE可以极大的增加代码编写效率,同时也可以避免使用命令行的形式来运行测试用例。

image

由图中我们可以看出,整个Demo由一个包括4条测试用例的testsuite以及一个资源管理文件 resource.robot组成。

首先我们看测试用例的代码。在RIDE中,Test Suite是一个虚拟的套件,切换到测试代码Tab后我们发现,所有功能的测试代码只有区区60行出头:

image

我们再来看resource资源管理文件的代码量

image

我们在资源文件中,引入了几个常用的测试库及工具库,并且对待测网址,测试浏览器,无效的Email Address地址以及下拉列表期待值进行了变量化的封装,全部代码也只有15行。

结束~

的确,如果是一个刚刚接触自动化测试的新手,通过这简单的不到100行代码,就可以完成多个需求的测试,如果使用原始的selenium+python代码,即使有一定的经验,提前把webdriver.Chrome(),driver.get(“Http://www.xxxxx.com”), driver.getElementBy()等方法进行封装,然后再在测试用例中进行调用,代码量也会远超100行,更别提这其中涉及到的下拉列表取值和对比。

最后我们来看一下全部执行完成后的测试报告以及自定义关键步骤的截图:

  1. 测试运行Log

随着测试用例的执行,RIDE本身会在控制台打印出各个用例的log情况,方便追踪报错以及测试失败情况。在控制台log的最下方,打印出了测试报告,测试long存放的地方。

image
  1. 测试报告
image

测试运行完成后,由于我们没有设置制定的报告存放地址,报告默认存在[User]/AppData/Local/Temp/路径下。打开文件夹,我们发现里面有5个文件:

a. geckodriver.log, 这个是selenium以及浏览器运行时的log,与我们这次要介绍的内容没有关系,暂时忽略
b. argfile.txt,储存了log文件夹的存放的地址,暂时忽略
c. Output.xml – RFS运行完成后,将整个测试的详细流程,包括具体的操作以及使用的变量等和对应操作的结果,在这个XML文件中展现。当测试体量不断增大,需要使用分布式执行测试的模式时,可以采用工具将每个子节点测试机器的output.xml合并起来,得到一个总体,详细的测试结果,这样的文档型测试结果也方便用户保存及使用版本控制工具来管理测试结果。

image

d. report.html | log.html – 这两个HTML文件就是整个测试最终的报告。在report.html中,对当前测试进行了总结,并给出了各种统计结果。

image

在这里我们可以按照用例的分类,标签的分类, 套件的分类等进行筛选,然后通过点击链接进入对应的详细log查看

image

e. 最后,我们来看一下测试的截图。在代码中,我们指定了截图保存的地址是测试代码文件夹,打开对应的文件夹,我们可以看到2张截图已经成功保存到这里,对应的文件名分别为:

name = input_all_info_3.jpg / signup_successful_2.jpg

image
image

本次介绍的第一部分就结束了,在接下来的部分我们会具体分析这个测试实例的代码,来展示RFS在自动化测试过程中的高效,便捷。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容