|
本帖最后由 ryugun 于 2012-9-21 21:23 编辑
接着BaseTestCase
/**
* 初始化地图
* <p/>从xml里读取出对应的关键字,放入map里
*/
@SuppressWarnings("unchecked")
private void initMap(String xmlPath, Map<String, String> map) {
try {
SAXReader reader = new SAXReader();
Document confXml = reader.read(BaseTestCase.class.getClassLoader().getResourceAsStream(
xmlPath));
// 获得根节点
Element rootElement = confXml.getRootElement();
Element paret;
// 遍历一级节点
for (Iterator<Element> parets = rootElement.elementIterator(); parets.hasNext();) {
paret = parets.next();
for (Iterator<Element> childrens = paret.elementIterator(); childrens.hasNext();) {
Element children = childrens.next();
map.put(children.attributeValue("name"), children.attributeValue("code"));
}
}
} catch (DocumentException e) {
logger.error("初始化【" + xmlPath + "】出错:", e);
Assert.assertFalse(true); //强制断言
}
}
/**
* 类前方法(初始化数据以及准备测试环境)
*/
@BeforeClass
public void beforeClass(){
initMap(); //初始化地图
resolver = new KeyWordsResolver(dataMap, keyWordsMap); //初始化关键字解析器
prepare(); //准备数据
}
/**
* 类后方法(清除环境)
*/
@AfterClass(alwaysRun=true)
public void afterClass() {
renew(); //恢复环境
}
/**
* 读取xml文件,初始化地图
*/
private void initMap() {
File file = new File(formatPath(BaseTestCase.class.getResource("").getPath()));
if (!file.exists()) {
logger.error("找不到xml初始化文件,请检查文件路径!");
return;
}
String[] names = file.list(); //获取当前文件夹内所有的文件名称
for (int i = 0; i < names.length; i++) {
if (names.startsWith("locator") || names.startsWith("init")) {
initMap("data/" + names, dataMap);
continue;
}
if (names.startsWith("keywords")) {
initMap("data/" + names, keyWordsMap);
}
}
}
/**
* 格式化参数文件的路径
* @param path 当前java文件的路径
* @return path 格式后的字符串
*/
private String formatPath(String path) {
path = path.replaceAll("com/huaweisymantec/iget/omm/testcase/", "");
path = path.replaceAll("\\/", "\\\\");
path = path.replaceFirst("\\\\", "").trim();
path = path + "data\\";
try {
path = URLDecoder.decode(path, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
}
------------------------------------------
下面贴上一个简单的工程。。里面jar包都不在,需要自己去下
工程里就是利用这个思想做的一个例子。
可以通过ant 运行build.xml来看效果,当然得需要把对应的jar包下载下来放进工程的lib里(selenium一系列的包,testng的包,读取excel的包jxl.jar,读取xml的dom4j.jar)
这个工程还存在一些问题,代码的设计还有些BUG,没详细解决,但具体思路大致就是这样。
|
|