有一位博友问了一些关于fitnesse的问题,我觉得都是不错的问题。发在自己的blog里,感兴趣的同行,可以一起讨论。
1. 如何不让fitnesse自动把驼峰命名形式的字符串识别为一个新页面(有没有转义符之类的)
试试单引号。因为fitnesse是基于wiki page的,你可以google一下wiki的语法。
2. 如何把某个路径或某个jar包定义为“全局”应用。这样就不用在每个测试页面重复定义一遍了。
在fitnesse里面,有testsuite的概念,比如我们这个工具的frontpage是这样写的:红色的是code.
# BasicTestSetup就是一个test suite.
'''Testsuites'''
|>BasicTestSetup|''Basic Test Setup''|
# 定义class path
----
'''Classpath'''
!path fitnesse*.jar
!path ./lib/*.jar
# 定义全局变量
----
'''Definitions'''
!define TEST_SYSTEM {slim}
!define BROWSER_TO_TEST {Internet Explorer}
!define START_URL {localhost:8080}
另外,每个testsuite里面有setup page和teardown page.你可以把一些初始化这个test suite的东西放到setup page里面去。对于clean up的东西,比如关闭浏览器这个的操作放到tear down page。Set up page和teardown page是会被这个suite里面的每个test case自动调用的。详细内容参见fitnesse的user guide.
3. 如何在fitnesse测试里使用测试数据文件(比如作为动态参数之类的)?放在哪里,如何加载,这个有经验吗?
这个涉及到框架问题了。我的经验是将测试数据放到一个page下,在test case里面include,做到测试数据和测试脚本分离。比如 test data的页面是这样的:
# InsertData这个页面里面有很多页面,每个页面里都有测试数据,比如truck one 里面定义了一些变量。
http://localhost:82/FrontPage.BasicTestSetup.InsertData
|>TruckOne|''Truck One''|
|>TruckTwo|''Truck Two''|
http://localhost:82/FrontPage.BasicTestSetup.InsertData.TruckOne
!define vehicleDisplayName {rt_70_t1h_4m}
!define vehicleVin {55200004611114770}
我再介绍一下如何使用这个页面:include测试数据的页面
http://localhost:82/FrontPage.BasicTestSetup.SetupOtherData.SetupVehicles
!include -c .FrontPage.BasicTestSetup.InsertData.TruckOne
Table里面这样调用变量
!|script|pages.CreateVehiclePage|
|type display name|${vehicleDisplayName}|
|type vin|${vehicleVin}|
这样的设计可以很好的分离测试数据和测试代码。
4.你的那个示例代码我运行不成功啊,我已经引入了selenium-java-2.31.0.jar ,且import 如下类:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.ie.InternetExplorerDriver;
import com.thoughtworks.selenium.*;
编译通过,但执行异常。是不是还需要哪些文件?
呵呵,我那个示例代码很有可能不成功,只是一个示例。因为我们在selenium的基础上,定义了一些自己的类。其中最主要的就是Browser这个类了。这部分是由其他开发做的,我也只是使用而已。代码是不能公布的,因为公司有security policy。我只能提供思路,我们把webdriver,和selenium这两个类都包含到Browser这个类中,作为成员。然后定义了一些方法,比如打开浏览器等等。
本文出自 “软件测试 自动化测试之路” 博客,谢绝转载!