Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3892167
  • 博文数量: 146
  • 博客积分: 3918
  • 博客等级: 少校
  • 技术积分: 8585
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-17 13:52
个人简介

个人微薄: weibo.com/manuscola

文章分类

全部博文(146)

文章存档

2016年(3)

2015年(2)

2014年(5)

2013年(42)

2012年(31)

2011年(58)

2010年(5)

分类: LINUX

2012-12-23 12:47:16

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

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

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

    第一步: 安装python
  1. root@manu:~/code/c/self/hello# python -V
  2. Python 2.7.3
    我就不多说了,如果装不上python,后面内容也不需要看了。

    第二步: 安装 robotframework
    下载地址:

    
  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。当时我同事建议我装上我就装上了,具体作用我自己也不明了。
   
    下载地址:

  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的创始人和核心开发者,他的硕士论文《》就是robotframework的理论基础,其他主要开发者请查看官方主页的,或者他们博客主阵地上列出的贡献者名单。

    光荣属于前辈。

  
参考文献:
1 robot framework user guide
2 我同事Kai的大力协助
阅读(43248) | 评论(4) | 转发(3) |
1

上一篇:数据结构之红黑树

下一篇:main之前

给主人留下些什么吧!~~

ryysoft2012-12-25 14:13:11

最诚心最便宜最实用的指导,全国独创,保证上万行软件开发水平。找工作学员来郑州学或通过QQ学都可以,安排工作。在职学员加入在线解决技术疑难服务,工作不累,还能快速打开项目经理和系统分析之门。
锐英源有16年开发经验,8年教学和英译经验,擅长软件外包开发和开发培训,可以提供在线解决技术疑难和就业能力提升服务,擅长语言有:C、C++、C#、ASP.NET和JavaScript等等,擅长环境有VC++、WIN32、.NET、Linux、GLIB和cygwin等等,擅长设计思路和软件工程教学,请看主页www.wisestudy.cn,电话13803810136!

Bean_lee2012-12-24 23:43:14

wjlkoorey258: 兄弟,最近学的知识挺新颖啊,赞叹~~~
回头推荐给我们做测试的同事们做个Friday Project.....
跑题一下,很快就回到老本行,呵呵,这几天准备着手写个编译链接的文章

Bean_lee2012-12-24 23:40:36

wjlkoorey258: 兄弟,最近学的知识挺新颖啊,赞叹~~~
回头推荐给我们做测试的同事们做个Friday Project.....
呵呵,好东西我都喜欢,所以我经常遏制不住自己四面出击的冲动。

这个东西看我同事有研究,我就跟他学了一手,这个框架很好用,可以写出很好的test case。如果你有很多API不动,可以做大量的case测试这些API,一旦内部代码有改动,如果出错,可以很及时的测试出有错误。

wjlkoorey2582012-12-24 21:49:11

兄弟,最近学的知识挺新颖啊,赞叹~~~
回头推荐给我们做测试的同事们做个Friday Project