第2章 开发测试组件
本章是最重要的一章,在你的公司能运行什么样的测试案例全都基于你能开发出什么样的测试组件。首先,我会带领大家了解如何用FitNesse做开发。接着,我会讲解四大组件的构建,基于Selenium的页面测试组件、基于SQL的数据库测试组件、最近比较火的MongoDB测试组件,以及测试WebService的REST组件。希望大家学完这四个组件的开发后,能够编写一些组件去满足公司的其他测试需求。
2.1 认识FitNesse项目
我们正式开始讲解如何基于FitNesse项目去搭建自动化测试框架。首先要下载FitNesse项目。下载地址:https://github.com/unclebob/FitNesse/。当我写这本书的时候,FitNesse最新版本是20151230版,下载地址是https://github.com/unclebob/fitnesse/releases/tag/20151230,我们可以点击下图所示链接下载。
图2-1-1下载FitNesse项目
1.导入项目到Eclipse
FitNesse导入项目到Eclipse的方法比较奇怪,因为它不是用Eclipse开发的,所以不能使用Eclipse中的import直接导入,而是采用如下方式。
(1)在最左侧的面板中,右键选择“New”→“JavaProject”。
(2)在弹出的新建面板中,去掉“Usedefaultlocation”的勾选,单击“Browse”按钮,路径如图2-1-2所示,选择刚解压的项目文件夹。
图2-1-2指定项目路径
单击“确定”按钮,然后,单击“Finish”按钮,FitNesse就导入Eclipse面板里了。
如今,作者把FitNesse如何导入Eclipse和IntelliJ写到了项目的README.md文档里,大家也可以参考这个文档去导入FitNesse。
2.运行FitNesse
运行FitNesse的方法和1.1节里运行qing-automation框架的方法一模一样,这里就不再赘述。在第一章中,是在CMD里输入antrun命令,本章给大家介绍一款CMD命令行增强工具TCC/LE,如图2-1-3所示,这款工具比CMD好用多了。
图2-1-3TCC/LE面板
项目启动后,在浏览器中输入“http://localhost:8001/”,显示图2-1-4所示的界面。
图2-1-4FitNesse首页
单击“ATwo-MinuteExample”链接,进入这个测试案例,再单击左上角的“Test”按钮,测试情况如图2-1-5所示。
图2-1-5FitNesse测试情况
单击左上角的“Tools”按钮,在下拉选项中选择“properties”,然后在新弹出的页面中选择图2-1-6所示的“Edit”选项,最后单击“SaveProperties”按钮保存设置。
图2-1-6配置properties
此时页面左上角出现Edit选项,单击“Edit”按钮,看到如下脚本:
|eg.Division|
|numerator|denominator|quotient?|
|10|2|5.0|
|12.6|3|4.2|
|22|7|~=3.14|
|9|3|<5|
|11|2|4<_<6|
|100|4|33|
注意首句“eg.Division”,在刚才导入Eclipse的项目中,打开文件夹src下的eg包,如图2-1-7所示,可以看到Division这个类。
图2-1-7eg.Division路径
打开Division这个类,对里边的代码随便做些改动,比如把
publicdoublequotient(){
returnnumerator/denominator;
}
改为:
publicdoublequotient(){
returnnumerator/denominator*1000;
}
或者改为:
publicStringquotient(){
return“HelloWorld”;
}
在tcc中按组合键“Ctrl+C”终止程序,如图2-1-8所示,再次输入“antrun"重新编译启动项目。
图2-1-8执行antrun编译
此时再次运行ATwo-MinuteExample这个案例,看看图2-1-9中出现了什么结果。
图2-1-9再次编译后运行结果
怎么样,看到图2-1-9与图2-1-5的不同了吧。
下面是前台脚本和后台代码之间的调用关系。
|eg.Division|
这句话的意思是先让此段脚本找到后台Java的eg包下的Division类。
|numerator|denominator|quotient?|
这行脚本分别对应Division类里仅有的三个方法,分别是:
publicdoublequotient()
publicvoidsetNumerator(doublenumerator)
publicvoidsetDenominator(doubledenominator)
numerator和denominator分别映射setNumerator和setDenominator两种方法,此处的方法名比调用它的脚本字段多了set这个单词,在FitNesse里仅有这种表格型的脚本写法用这种映射关系,其他的脚本字段和后台Java类里的方法名都应严格对应。numerator和denominator字段下面列的那些数字,就是要传给setNumerator和setDenominator方法里的参数的。
“quotient?”和有double类型返回值的“quotient()”方法对应。加了一个“?”是因为下面的列会用来输出返回值。在其下面的列里输入字符时,它会自动比较输入的字符和输出的字符是否相等。如果不输入字符,那么其下面的列里就仅仅将返回值显示出来。
作业:
请将setNumerator和setDenominator做些改动,然后重新编译启动
项目,看看案例运行结果有什么不同。