// 如果是调用公共方法,则不用初始化任何page.页面方法才初始化
if (!current.getPageObject().equals("BasePage")) {
//这里就是通过反射去调用刚才的初始化方法了,参数太多,反正就是用数据去初始化Page.
Reflections.invokeMethod(o, "initPage", new Class[] {
Integer.class, XPathService.class, String.class, String.class, Boolean.class},
new Object[] { pid, xps, current.getKeyword(), judgeSite() , isMobile});
}
initPage 上面有提到,在运行的时候会根据传入的页面模型 ID 去初始化。
//这里埋下伏笔,总之我取到了我当前操作所需要初始化的所有fileds
List<String> workingElements = Reflections.getUsedFiledsName(
this.getClass(), allRequiredData.keyword);
getUsedFiledsNames 上面也有提到。就是取 ContainsElements 的列表的。
getUsedFiledsNames 我没写出来,也就是简单的用注解取一个元素字符串的 List。 这个方法大概是这样:
public static List<String> getUsedFiledsName(Class clazz, String methodName) {
List<String> elements = new ArrayList<String>();
Method[] methods = clazz.getMethods();
for(int i=0; i < methods.length; i++) {
if(methods[i].getName().equals(methodName)) {
ContainsElements ce = methods[i].getAnnotation(ContainsElements.class);
if(ce == null) {
break;
}
String[] es = ce.values();
for(int j = 0; j < es.length; j++) {
elements.add(es[j]);
}
}
}
return elements;
}
}
#3 楼 @lihuazhang 数据全在 DB,用 Web 界面维护的。数据这一块我这也没什么新意,放 DB 也好,xml 也好,excel 也好,最终都是拿来用,而我在存储,组织或者提取数据方面都是中规中矩的东西,也没什么设计,最多做点类似项目全局变量的玩意儿增加一下数据的复用。比如我要执行用例 A,就根据 A 的 id 去 mysql 数据库取他的页面模型 (Homepage),操作关键字 (click_button),取参数(由于我们是多语言的,所以某些时候取参数要过一下语言包)。提取后封装,然后拿给 MainRunner 用就行。用 Web 界面有一定好处,比如封装 Page 后,可以直观的在前端展示有哪些页面,做一个可以过滤筛选的下拉;又比如可以顺便展示测试报告,截图或者统计等。
一周的工作忙完了,静静的喝杯茶再来读读这个系列,看能否有所收获
执行用例的代码在哪呢? 另外我觉得你可以把 Cell FI = sheet0.getCell(5, i) 类似这种的 5 6 7 8 列编号拉出来管理,比如 public static Integer COLUMN_FI = 5; //说明这是什么. 这样如果你 EXCEL 结构有调整也方便一些。
delicious! 这个系列要写下去,持续关注中。
大话设计模式
图片看不清楚。 不过简单的那几个断言语句绝对满足不了接口测试响应验证的需求
#5 楼 @chenhengjie123 最简单的 结合起来,就是用 webdriver + grid + jenkins 实现分布式持续集成
#4 楼 @gaopeng1106 不止爬的 topics, 所有页面都 fetch. 等我完善了代码贴出来给您评估评估
#3 楼 @seveniruby 我没有添加! 我预计如果 appium 和 robotium 加进来也无法扭曲这个结果,哈哈哈 。 话说还可以有哪些关键词,可以加进来,下次彻底趴一趴我们都在做些什么
#14 楼 @xushizhao 哎呀老徐,我也就是来打个圆场。你自然是没说错,我的意思是楼主确实理解有偏差。别较真了。
#8 楼 @xushizhao 别较真了。。他的意思是异常 catch 后打了个堆栈就是 “抛出” 了。 你理解的抛出和他理解的不同而已。 他只是想打出来看一看,不作处理
#6 楼 @mengfeiyang 你这说的那么悬乎,这玩意儿怎么就影响到搞培训的收入了。。
找开发人员配合,设法获取验证码呗
#2 楼 @lihuazhang 1,10 和 5,50 有何区别。。
一起来聊聊 XXX,这是潮流吗
我估计很多社区里的人都和楼主有相似的感觉——当得到一个测试任务后,总爱对问题进行深度优先遍历,究其开发原理,想不通睡不着,反而忽视了更重要的广度优先遍历,覆盖业务逻辑。否定后者其实就是否定自己的存在啊!