obot framework 入门 2012-12-23 12:47:16

分类: LINUX

    其实我不喜欢动不动就框架,动不动就架构,整出一坨专业术语搞的玄而又玄,让人云山雾绕,我想做的事情很简单,自动地测试我的多个程序,更友好的显示出我的程序的测试结果。

当我的程序比较少的时候,我可以手工的执行测试程序,察看结果。但是如果的程序多了之后,我不能天天手工去执行,这样的话,太费时了,而且,通过不通过还要自己去看 $?. 有人说,你写好的程序,不改动,为啥天天测一遍。实际情况是,有时候我会改这些程序,对外接口不变,内部实现有时候会改动,我希望有一个工具能够每天帮我测试一遍所有的代码,把最终的结果用更友好,更可读的方式呈现出来。

我的同事Kai,做了很多这方面的学习研究工作,我向他讨教了一些经验,昨天晚上和今天早上自己学习了下,给自己搭建了一个robot framework的框架。很多东西我也不懂,现在还是入门级别的水平,想深入学习的筒子请移步robot framework,去获取更过详细的信息。

第一步: 安装python

  1. root@manu:~/code/c/self/hello# python -V
  2. Python 2.7.3

我就不多说了,如果装不上python,后面内容也不需要看了。

第二步: 安装 robotframework
    下载地址:http://code.google.com/p/robotframework/downloads/detail?name=robotframework-2.7.5.tar.gz

  1. tar zxvf robotframework-2.7.5.tar.gz
  2. cd robotframework-2.7.5
  3. python setup.py install

第三步:安装robotframework-seleniumlibrary
    这步骤应该是可选的,这是一个web test library。当时我同事建议我装上我就装上了,具体作用我自己也不明了。
    
    下载地址:http://code.google.com/p/robotframework-seleniumlibrary/downloads/list

  1. tar -zxvf robotframework-seleniumlibrary-2.9.1.tar.gz
  2. cd robotframework-seleniumlibrary-2.9.1
  3. python setup.py install

整个robot framework的框架搭建是非常简单的,这也是这个东西的优势。如果巨复杂,谁愿意用啊?

下面是关键部分,我用我前段时间写的红黑树的测试代码作为例子。我的红黑树有测试代码:这些代码不需要看,我测试了创建,插入,删除这几个接口。这个测试程序会编译成可执行程序,如果测试通过,返回0,如果出现异常,或者返回值是其他值,或者干脆就段错误了,也会被robot framework捕获到,最终生成结果报告。

下面开始详细步骤:

1 建立一个auto_test的目录,将来我们的测试脚本都会放在这个下面。

  1. mkdir ~/auto_test

2 为rb_tree 这个程序建立一个测试代码坐在的目录

  1. cd ~/auto_test
  2. mkdir rb_tree

3 写测试脚本:

  1. root@manu:~/auto_test/rbtree/library# cd ..
  2. root@manu:~/auto_test/rbtree# ll
  3. 总用量 16
  4. drwxr-xr-x 3 root root 4096 12月 23 13:48 ./
  5. drwxr-xr-x 4 manu root 4096 12月 23 13:15 ../
  6. drwxr-xr-x 2 root root 4096 12月 23 13:49 library/
  7. -rw-r--r-- 1 root root 481 12月 23 13:48 test_rbtree.txt
  8. root@manu:~/auto_test/rbtree# ll library/
  9. 总用量 12
  10. drwxr-xr-x 2 root root 4096 12月 23 13:49 ./
  11. drwxr-xr-x 3 root root 4096 12月 23 13:48 ../
  12. -rw-r--r-- 1 root root 100 12月 23 13:38 test_rbtree.py

我们看下test_rbtree.txt的内容:

上面这种格式是robot framework支持的三种文档格式之一。这三种格式是
    1 HTML ,不多说。
    2 TSV格式 ,这个我没用过,我也不懂,不多说
    3 纯文本格式,比如说我这个test_rbtree.txt。(汗一个,总算有个稍懂一点的了)
    官方文档里面还提高了reST格式,这个咱也不懂。但是对这个感兴趣的筒子可以去看官方文档,如果英语不过关的筒子可以去http://blog.sina.com.cn/s/blog_654c6ec70100zj6p.html 这个地址,这个博主写了好多篇robot framework的文章。

一个test case 应该有四个部分组成,Setting,Variable,Testcase,Keyword,但是也不是必须的,比如我的test case 只有2个,Setting 和Testcase .

Setting 一般是告诉pybot 我的测试库文件在哪儿,比如我的测试代码就是library下的test_rbtree.py,一些资源文件,变量文件也会在这里声明,但是我们没有这些。

其中Force Tags会在输出结果中体现。我们起一个比较有意义的tag,比如红黑树是基本的数据结构,我所有的基本数据结构的tag都命名为 basic data  structure 。 他们就能在输出中聚在一起。

Test Cases 中test_rbtree表示我这一测试项的名字是test_rbtree,这个名字可以随便起,没关系。但是最好是能明确告知这个测试测的是什么。

Argument这一列下面的test_rbtree表示的是function,必须出现在测试库文件里面,就是在library/test_rbtree中必须要有test_rbtree这个function。

  1. root@manu:~/auto_test/rbtree# cat library/test_rbtree.py
  2. import os
  3. def test_rbtree():
  4. return os.system('/home/manu/code/c/self/rbtree/test')

我们这个测试项的名字是test_rbtree,执行library/test_rbtree.py 里面的test_rbtree 函数,将返回值给val变量,
判断 val == 0,如果val ==0,表示测试通过,否则,测试失败。

Should Be True 是Robot Framework 自动提供的。表示应该是表达式应该成立,如果不成立表示failed。

这就比较简单了,简单地说我们的一个测试例子就完成了,下面我们利用pybot生成报表。

  
    我们可以看到,我们的测试例子通过了,同时生成了三个结果文件。我们看下生成的report。

    很好看吧。有人说,这是一个文件的report。 其实很简单,你在auto_test下面多建几个类似的文件夹,然后对auto_test 执行pybot,他会将auto_test下的每个case都会跑到,生成一个总结果。
    下面是一个有成功有失败的例子,我故意将test_hello测试失败。
    
    
    当然了,我接触robot framework的时间还短,很多东西不懂,需要在实践中学习。 我先用起来,慢慢提高。希望路过的高手可以指点下。

最后,吃水不忘掘井人,膜拜一下大神Pekka。 Pekka是robotframework的创始人和核心开发者,他的硕士论文《Data-Driven and Keyword-Driven Test Automation Frameworks》就是robotframework的理论基础,其他主要开发者请查看http://robotframework.org官方主页的人物名单,或者他们博客主阵地上列出的贡献者名单。

光荣属于前辈。

robot framework 入门的更多相关文章

  1. Robot Framework 入门教程总结

    Robot Framework 作为一款通用测试框架,可加载多种测试库.驱动多种测试工具,并可对各种自定义脚本进行集成.对于Robot Framework,我准备将其分为 入门--Robot Fram ...

  2. Robot Framework入门学习1 安装部署详解

    安装注意: 目前Robot framework-ride不支持python3,安装时请下载python2.7版本. Robot Framework安装时出现了一点小问题,网上没有找到直接的介绍,现将安 ...

  3. 1. Robot Framework入门

    RF定义: 通用型的 自动测试框架, 绝大部分的软件的的自动化系统都可以采用它. 特点: 测试数据文件(Test Data)对应一个个的测试用例.测试数据文件里面使用的功能小模块叫关键字,由测试库(T ...

  4. Robot Framework入门学习2 创建第一个测试用例

    本文章部分内容引自以下网址,感谢作者的辛苦分享 http://www.cnblogs.com/fnng/p/3871712.html http://blog.csdn.net/tulituqi/art ...

  5. 2小时入门Robot Framework

    1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...

  6. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  7. Robot Framework 快速入门

    Robot Framework 快速入门 目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键 ...

  8. Robot Framework(一)入门

    1.1简介 Robot Framework是一个基于Python的,可扩展的关键字驱动的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD).它可用于测试分布式异构应用程序,其中验证需要涉 ...

  9. Robot Framework 快速入门_中文版

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

随机推荐

  1. cocos2d-x CCSrollView 源代码,可循环的SrollView代码

    项目须要.写一个类似于iPhone上面时钟选择的可拉动式循环选择列表,通过集成CCScrollView并更改部分代码.实现了该功能. 假设想充分了解代码,请先阅读源码分析http://blog.csd ...

  2. Hibernate也须要呵护——Hibernate的泛型DAO

    众所周之.面向对象的基础是抽象.也能够说,抽象促使编程在不断发展. 对于数据库的訪问,以前写过HqlHelper.EFHelper.编写Spring+Hibernate框架下的应用.也相同离不了编写一 ...

  3. uva live 4394 String painter 区间dp

    // uva live 4394 String painter // // 这一题是训练指南上dp专题的习题,初看之下认为仅仅是稍微复杂了一点 // 就敲阿敲阿敲,两个半小时后,发现例子过了.然而自己 ...

  4. 如何离线分析Kafka海量业务消息?1分钟快速为您支招

    场景介绍 说起Kafka,许多使用者对它是又爱又恨.Kafka是一种分布式的.基于发布/订阅的消息系统,其极致体验让人欲罢不能,但操心的运维.复杂的安全策略.可靠性易用性的缺失等,仍需要使用者付出诸多 ...

  5. Windows 7旗舰版安装Visual Studio 2013 Ultimate的系统必备及注意事项

    系统必备: 1.Windows7 SP1 2.IE 10

  6. NS3网络仿真(9): 构建以太网帧

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在NS3使用了一个叫Packet的类来表示一个数据帧,本节尝试用它构造一个以太网帧. 以下是一个典 ...

  7. iOS开发——高级篇——多线程GCD死锁

    面试题 请问以下代码打印结果: - (void)interview01 { // 以下代码是在主线程执行的 NSLog(@"执行任务1"); dispatch_queue_t qu ...

  8. linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案

    linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案 今天在安装程序时,发现有一个插件未安装,我就随手敲了一个命令,看都 ...

  9. intellij IDEA破解

    方法1 填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com ...

  10. YTU 2852: 二分查找

    2852: 二分查找 时间限制: 1 Sec  内存限制: 128 MB 提交: 215  解决: 79 题目描述 输入不多于20个升序排列的整数,以及一个待查找的数key,输出key在序列中的位置( ...