赞
踩
需求:
针对指标的查值有固定的文法例如 ${org_name}的业务量是多少,需要替换变量来生成测试用例
这个是最新的,把变量和列表放到map里面
- package net.yto.com.testplatform;
-
- import com.alibaba.fastjson.JSON;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- public class TestMain {
- public static void main(String[] args) {
- TestMain testMain = new TestMain();
- List<String> templates = new ArrayList<>();
- templates.add("${org_name}的业务量是多少?");//2
- templates.add("${time}${org_name}的业务量是多少");//2*3=6
- templates.add("${time}${org_name}${max}的业务量是多少");//2*3*2=12
- List<String> orgnameList = new ArrayList<>();
- orgnameList.add("北京");
- orgnameList.add("上海");
- List<String> timeList = new ArrayList<>();
- timeList.add("昨天");
- timeList.add("今天");
- timeList.add("今年");
- List<String> maxList = new ArrayList<>();
- maxList.add("最大");
- maxList.add("前三");
-
- Map<String,List<String>> param_datas = new HashMap<>();
- param_datas.put("${org_name}",orgnameList);
- param_datas.put("${max}",maxList);
- param_datas.put("${time}",timeList);
- List<String> resultList = new ArrayList<>();
- for (String template : templates) {
- testMain.makeData(template, resultList, param_datas);
- }
- System.out.println(resultList.size());
- System.out.println(JSON.toJSONString(resultList, true));
-
- }
-
- /** 根据模板和变量值列表
- * @param template 模板
- * @param testList 生成的用例集合
- */
- public void makeData(String template, List<String> testList, Map<String,List<String>> param_datas) {
- //递归终止条件:
- if (!template.contains("$")) {
- return;
- }
- for (Map.Entry<String,List<String>> entry:param_datas.entrySet()){
- String key = entry.getKey();
- List<String> value = entry.getValue();
- //替换org_name
- if (template.contains(key)) {
- List<String> casesList = makeCases(template, key, value);
- for (String case1 : casesList) {
- if (case1.contains("$")) {
- makeData(case1.replace(key, ""), testList, param_datas);
- } else {
- testList.add(case1);
- }
- }
- break;
- }
- }
-
- }
-
- /**
- * 具体生成用例方法,实际可以根据指标对应的组织来生成
- *
- * @param template 模板
- * @param param 变量
- * @param paramDataList 变量的值列表
- * @return
- */
- public List<String> makeCases(String template, String param, List<String> paramDataList) {
- List<String> casesList = new ArrayList<>();
- String temp = template;
- for (String paramData : paramDataList) {
- casesList.add(temp.replace(param, paramData));
- }
- return casesList;
- }
- }
- package net.yto.com.testplatform;
-
- import com.alibaba.fastjson.JSON;
-
- import java.util.ArrayList;
- import java.util.List;
-
- public class TestMain {
- public static void main(String[] args) {
- TestMain testMain = new TestMain();
- List<String> templates = new ArrayList<>();
- templates.add("${org_name}的业务量是多少?");//2
- templates.add("${time}${org_name}的业务量是多少");//2*3=6
- templates.add("${time}${org_name}${max}的业务量是多少");//2*3*2=12
- List<String> orgnameList = new ArrayList<>();
- orgnameList.add("北京");
- orgnameList.add("上海");
- List<String> timeList = new ArrayList<>();
- timeList.add("昨天");
- timeList.add("今天");
- timeList.add("今年");
- List<String> maxList = new ArrayList<>();
- maxList.add("最大");
- maxList.add("前三");
-
-
- List<String> resultList = new ArrayList<>();
- for (String template : templates) {
- testMain.makeData(template, resultList, orgnameList, timeList, maxList);
- }
- System.out.println(resultList.size());
- System.out.println(JSON.toJSONString(resultList, true));
-
- }
-
- /** 根据模板和变量值列表
- * @param template 模板
- * @param testList 生成的用例集合
- * @param orgnameList 组织列表
- * @param timeList 时间列表
- * @param maxList 极值列表
- */
- public void makeData(String template, List<String> testList, List<String> orgnameList, List<String> timeList, List<String> maxList) {
- //递归终止条件:
- if (!template.contains("$")) {
- return;
- }
- //替换org_name
- if (template.contains("${org_name}")) {
- List<String> casesList = makeCases(template, "${org_name}", orgnameList);
- for (String case1 : casesList) {
- if (case1.contains("$")) {
- makeData(case1.replace("${org_name}", ""), testList, orgnameList, timeList, maxList);
- } else {
- testList.add(case1);
- }
- }
- //替换max
- } else if (template.contains("${max}")) {
- List<String> casesList = makeCases(template, "${max}", maxList);
- for (String case1 : casesList) {
- if (case1.contains("$")) {
- makeData(case1.replace("${max}", ""), testList, orgnameList, timeList, maxList);
- } else {
- testList.add(case1);
- }
- }
- //替换time
- } else if (template.contains("${time}")) {
- List<String> casesList = makeCases(template, "${time}", timeList);
- for (String case1 : casesList) {
- if (case1.contains("$")) {
- makeData(case1.replace("${time}", ""), testList, orgnameList, timeList, maxList);
- } else {
- testList.add(case1);
- }
- }
-
- } else {
- return;
- }
-
- }
-
- /**
- * 具体生成用例方法,实际可以根据指标对应的组织来生成
- *
- * @param template 模板
- * @param param 变量
- * @param paramDataList 变量的值列表
- * @return
- */
- public List<String> makeCases(String template, String param, List<String> paramDataList) {
- List<String> casesList = new ArrayList<>();
- String temp = template;
- for (String paramData : paramDataList) {
- casesList.add(temp.replace(param, paramData));
- }
- return casesList;
- }
- }
20条数据
- [
- "北京的业务量是多少?",
- "上海的业务量是多少?",
- "昨天北京的业务量是多少",
- "今天北京的业务量是多少",
- "今年北京的业务量是多少",
- "昨天上海的业务量是多少",
- "今天上海的业务量是多少",
- "今年上海的业务量是多少",
- "昨天北京最大的业务量是多少",
- "今天北京最大的业务量是多少",
- "今年北京最大的业务量是多少",
- "昨天北京前三的业务量是多少",
- "今天北京前三的业务量是多少",
- "今年北京前三的业务量是多少",
- "昨天上海最大的业务量是多少",
- "今天上海最大的业务量是多少",
- "今年上海最大的业务量是多少",
- "昨天上海前三的业务量是多少",
- "今天上海前三的业务量是多少",
- "今年上海前三的业务量是多少"
- ]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。