您的位置:首页 > 编程语言

自动化测试代码的自动生成

2015-06-30 10:36 399 查看

自动化测试代码的自动生成

一、界面展示

我们来看看可视化的代码自动化生成界面设计,



二、字段用途解释

选择目标测试类

指: 需要生成代码所要依据的接口类名称。

备注: 这个是使用的文件上传,自动载入接口类名。

本地的测试工程

指:需要生成代码的路径地址。

备注: 默认是生成在项目空间的java代码资源路径。

脚本使用的模板

指: 自动生成的脚本的代码所使用的模板样式。

备注: 一般是会根据正常场景和异常场景进行区分。

脚本使用的名称

指: 这个是代码生成后的一个名称(类名)

备注:类名称_检查点描述_用例的类型

新建的脚本类型:

指: 正常测试还是异常测试。

备注: 这个是和模板配合使用的。

脚本使用的编号

指: 脚本测试数据的编号

备注: 用于在执行的时候区分用例。

脚本描述

指: 脚本的描述,测试检查点,业务描述等。

参数列表

指: 根据类进行联动生成的。

三、代码展示

代码(0)

@RequestMapping(value = "/genScript.form", method = RequestMethod.POST)
public ModelAndView genScript(HttpServletRequest request) {
String className = request.getParameter("oClass");
String oProject = request.getParameter("oProject");
String oTemplet = request.getParameter("oTemplet");
String oMethodName = request.getParameter("oMethodName");
String oType = request.getParameter("oType");
String oNo = request.getParameter("oNo");
String oDesc = request.getParameter("oDesc");
String oNumber = request.getParameter("oNumber");
String oParaList = request.getParameter("oParaList");
Boolean oBoolean = new TestCaseCGenerator().genScript(mav, className,
oProject, oTemplet, oType, oNo, oDesc, oNumber, oParaList,oMethodName);
oSharedDateUtil.shareDate(doMapper, user, cj_awardsDO, mav);
//设置跳转页面
mav.addObject("jspContent", "res.jsp");
mav.addObject("result", oBoolean);
//添加页面标题
mav.addObject("title", "首-页");
//页面业务处理--单独的方法处理
return mav;
}


代码(1)

/**
*
* 方法名称:genScript
* 方法描述:
* 参数列表:@param mav
* 参数列表:@param className
* 参数列表:@param oProject
* 参数列表:@param tempter
* 参数列表:@param oType
* 参数列表:@param oNo
* 参数列表:@param oDesc
* 参数列表:@param oNumber
* 参数列表:@param paramas
* 参数列表:@param oMethodName
* 参数列表:@return
* 返  回  值:Boolean
* 创  建  人:
* 创建时间:2015年6月29日 下午4:10:54
* 修  改  人:
* 修改时间:2015年6月29日 下午4:10:54
* 修改备注:
* @version
* @throws
*
*/
public Boolean genScript(ModelAndView mav, String className,
String oProject, String tempter, String oType, String oNo,
String oDesc, String oNumber, String paramas, String oMethodName) {
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
ve.setProperty("classpath.resource.loader.class",
ClasspathResourceLoader.class.getName());
ve.setProperty(RuntimeConstants.INPUT_ENCODING, "utf-8"); // 输入编码格式设置
ve.setProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8"); // 输出编码格式设置
ve.init();
Template actionTpt = ve.getTemplate(tempter);
Template csv = ve.getTemplate("csv.vm");
VelocityContext ctx = new VelocityContext();
String[] oCls = className.split(":");
String str = oCls[1];
String str1 = lowToUpperCase(str);
String oName = str1 + "_" + oCls[0] + "_" + oMethodName + "_" + oType;
mav.addObject("name", oName);
String tcDir = str1 + "_" + oCls[0];
ctx.put("classNameUpCase", tcDir);
ctx.put("oDesc", oDesc);
ctx.put("oNo", oNo);
ctx.put("subId", oCls[0]);
String oTcMethodName = oCls[1] + "_" + oMethodName;
ctx.put("classNameLowCase", oTcMethodName);
ctx.put("methodParamsName", paramas);
String[] arr = paramas.split(",");
ArrayList<String> newArr = new ArrayList<String>();
for (int i = 0; i < arr.length; i++) {
if ( !StringUtils.equals(arr[i], "user_token")) {
newArr.add(arr[i]);
}
}
String csvParamsList = "";
String methodParamsList = "";
if (!newArr.isEmpty()) {
String st = newArr.toString();
String oParamas = (String) st.subSequence(1, (st.length()) - 1);
methodParamsList = " ,String " + oParamas.replace(",", ",String ");
csvParamsList=" , "+oParamas;
}
ctx.put("csvParamsList", csvParamsList);
ctx.put("methodParamsList", methodParamsList);
ctx.put("testCaseDesc", oDesc);
ctx.put("oMethodName", oMethodName);
ctx.put("oType", oType);
return excue(mav, actionTpt, csv, ctx, oType, oProject, oMethodName,
tcDir, oTcMethodName);
}


代码(二)

/**
*
* 方法名称:excue
* 方法描述:
* 参数列表:@param mav
* 参数列表:@param actionTpt
* 参数列表:@param csv
* 参数列表:@param ctx
* 参数列表:@param oNormal
* 参数列表:@param oProject
* 参数列表:@param oMethodName
* 参数列表:@param tcDir
* 参数列表:@param oTcMethodName
* 参数列表:@return
* 返  回  值:boolean
* 创  建  人:
* 创建时间:2015年6月29日 下午4:11:24
* 修  改  人:
* 修改时间:2015年6月29日 下午4:11:24
* 修改备注:
* @version
* @throws
*
*/
private static boolean excue(ModelAndView mav, Template actionTpt,
Template csv, VelocityContext ctx, String oNormal, String oProject,
String oMethodName, String tcDir, String oTcMethodName) {
Boolean flag = false;

String csvPath = oProject + "\\src\\main\\resources\\TestCase-Data\\"
+ tcDir + "_" + oMethodName + "\\" + oNormal;
createDir(csvPath);
csvPath = csvPath + "/" + oTcMethodName + ".csv";
String javaPath = oProject
+ "\\src\\main\\java\\com\\homs\\ats\\TestSctipts\\" + tcDir
+ "\\";
createDir(javaPath);
javaPath = javaPath + "/" + tcDir + "_" + oMethodName + "_" + oNormal
+ ".java";
boolean b1 = merge(csv, ctx, csvPath);
boolean b2 = merge(actionTpt, ctx, javaPath);
if (b1 & b2) {
flag = true;
}
mav.addObject("javaPath", javaPath);
mav.addObject("csvPath", csvPath);
return flag;
}


代码(三)

/**
*
* 方法名称:lowToUpperCase
* 方法描述:  首字母大写
* 参数列表:@param str
* 参数列表:@return
* 返  回  值:String
* 创  建  人:ligang13009
* 创建时间:2015年6月29日 下午4:11:38
* 修  改  人:ligang13009
* 修改时间:2015年6月29日 下午4:11:38
* 修改备注:
* @version
* @throws
*
*/
private static String lowToUpperCase(String str) {
return str.replaceFirst(str.substring(0, 1), str.substring(0, 1)
.toUpperCase());
}

private static Boolean merge(Template template, VelocityContext ctx,
String path) {
PrintWriter writer = null;
Boolean flag = false;
try {
writer = new PrintWriter(path);
template.merge(ctx, writer);
writer.flush();
flag = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
writer.close();
}
return flag;
}

private static void createDir(String path) {
File file = new File(path);
//如果文件夹不存在则创建
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
}


四、模板

模板(JAVA)



模板(CSV)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: