根据我的理解,关键字驱动框架是,我们为执行的每个操作创建一个关键字,并使用这些关键字在excel中编写测试用例。 例如,打开浏览器,输入用户名,密码,单击登录按钮等,我们为每个操作创建一个关键字,并为每个关键字创建一个方法,并将所有这些方法存储在诸如actionmethods()等的类中。
我们使用java反射类来调用这些方法。
如果我们少一些。应该可以的方法。我正在做一个小项目,其中有200个关键字。所以我必须在这里写200个方法。我应该将所有这些方法都存储在一个类中吗?
如果我有1000个关键字(对于一个大型项目)该怎么办?
如果我基于页面创建单独的文件分组关键字方法,它将变得非常复杂。有人可以解释一下我们是否仅使用一个类来容纳所有方法吗?
谢谢。
答案 0 :(得分:1)
像在页面对象模式中一样,将关键字方法作为每个页面的单独类维护。
在调用关键字时,我们还可以指定类名以及方法名。例如LoginPage.login
例如,如果您在包com.myproject.test.pages
下维护页面类,则可以更改反射代码以作为调用,
public Object invokeKeywordMethod(String keywordName)
throws InvocationTargetException, IllegalAccessException, InstantiationException {
String[] keywords = keywordName.split("\\.");
if (keywords.length == 1)
throw new Error("Invalid keyword: " + keywordName + ". The keyword must be as ClassName.methodName");
String className = keywords[0];
String methodName = keywords[1];
Class<?> pageClass = getPageClass(className);
Method method;
try {
method = getPageClass("").getDeclaredMethod(methodName);
} catch (NoSuchMethodException e) {
throw new Error("The keyword method '" + methodName + "' is not found in the class");
}
return method.invoke(pageClass.newInstance());
}
private Class<?> getPageClass(String className) {
Class<?> pageClass = null;
try {
pageClass = Class.forName("com.myproject.test.pages." + className);
} catch (ClassNotFoundException e) {
throw new Error(className + " not found in package 'com.myproject.test.pages' ");
}
return pageClass;
}