一直旧闻fitnesse和robotframework大名,但偷懒,并且有现成的自动化测试平台使用,故一直没去研究。
前几天从图书馆(图书馆就是好,不收钱)借了本<集成测试框架--用fit进行敏捷软件测试>(中文翻译有问题,原文中哪有敏捷两个字),简单看了一下,发现及其好用,思想非常好。
最基本上用三种表格将大部分的测试用例包括了:
从www.fitnesse.org网站上下载了fitnesse(没有下载fit)(靠,这几天网络不知为什么,最新版本下不了,最后下了一个次新版本)。
安装非常easy,但接下来就遇到麻烦了。写的case不能连接到写的java代码,不管"!path"如何指定。折磨了两天,决定换个方向,用python版本(找到一种解决方法,请见下面)。
下载了python版本(时间比较老,好像是2005年的,基本上没有更新,其他语言的fit版本也是,只有fitnesse一直在更新),一安装运行。靠,有出错了,说找不到"fitfilter.py"文件,到网上一查,说将setup.py中“fitfilter.py”的语句屏蔽即可。靠,作者也太不负责了吧,为什么不搞个干净版本。
然后按照http://agile.unisonis.com/PyFitTutorial.html 中的步骤一步一步操作,最后运行一切成功。
另:中途差点换了robotframework,但好像没有提供web方式,故没有动力去研究。而python版本目前非常适合现状,反而java还不适合。
几个小提示
1:
针对python,在wiki上写case时,一定要加下面几行
!define COMMAND_PATTERN {python "%m" %p}
!define TEST_RUNNER {C:/Python25/PyFIT-0.8a2/fit/FitServer.py}
!path D:/tmp/fit
第一行告诉fitnesse用的是python,第二行告诉fitnesse fitserver的地方,第三行就是case代码了。
2:
如果要使用 “BloggerFixtures.DeleteAllEntries”这种方式,一定要在BloggerFixtures目录下放一个空的__init__.py
3:
在eclipse用fitnesse,网上有个很好的视频,可以看看
http://softeng.polito.it/courses/tutorial/FitnesseInEclipse.html
4:
自动化测试有关键的一条就是可以脚本运行,而fitnesse在命令行下执行为:
usage: java fitnesse.runner.TestRunner [options] host port page-name
-v verbose: prints test progress to stdout
-xml <file> Sends xml test results to the file. If file is 'stdout' sends xml to standard out.
-suiteFilter <filter> runs only those tests of a suite which have been marked with the respective filter
举例为:
java -cp fitnesse.jar fitnesse.runner.TestRunner -v localhost 8010 BlogMgmtSuite
BlogMgmtSuite即为测试页面
5:
在wiki中写path时,目录最后的一个"/"不能写,只能写成下面方式:
6:
java版本如何运行。
因为是用eclipse建立工程的,发现必须将path指向bin目录才可调用,这样岂不是很麻烦,但目前至少可以解决了。
!path D:/cj/project/android/work/Addition/bin