java接口自动化工程,将request body,和sql 条件变量提取出来,替换成关联接口返回值,代码实现
时间: 2024-05-03 10:17:40 浏览: 153
java接口自动化案例
这个需求可以通过以下几个步骤来实现:
1. 通过接口请求获取到需要关联的返回值,并将返回值存储到一个 Map 中,例如,将返回值存储到一个名为 responseMap 的 Map 中,其中 key 为关联变量名,value 为关联变量对应的值。
2. 读取需要替换的 request body 和 SQL 条件变量,使用正则表达式匹配出变量名,并将变量名存储到一个 List 中,例如,将变量名存储到一个名为 varList 的 List 中。
3. 遍历 varList,对于每个变量名,从 responseMap 中查找对应的值,并将其替换到原来的 request body 和 SQL 条件变量中。
下面是一个 Java 代码示例:
```java
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ApiTest {
private static final String REQUEST_BODY = "{ \"name\": \"${name}\", \"age\": ${age} }";
private static final String SQL_CONDITION = "SELECT * FROM user WHERE name = '${name}' AND age = ${age}";
public static void main(String[] args) {
// 发送关联的接口请求,获取返回值
Map<String, String> responseMap = new HashMap<>();
responseMap.put("name", "Tom");
responseMap.put("age", "18");
// 解析出需要替换的变量
List<String> varList = parseVars(REQUEST_BODY + SQL_CONDITION);
// 替换变量
String requestBody = replaceVars(REQUEST_BODY, varList, responseMap);
String sqlCondition = replaceVars(SQL_CONDITION, varList, responseMap);
System.out.println(requestBody);
System.out.println(sqlCondition);
}
/**
* 解析出需要替换的变量名
*/
private static List<String> parseVars(String text) {
String regex = "\\$\\{\\w+\\}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
List<String> varList = new ArrayList<>();
while (matcher.find()) {
String varName = matcher.group();
varList.add(varName.substring(2, varName.length() - 1));
}
return varList;
}
/**
* 替换变量
*/
private static String replaceVars(String text, List<String> varList, Map<String, String> varValueMap) {
for (String varName : varList) {
String varValue = varValueMap.get(varName);
if (varValue != null) {
text = text.replace("${" + varName + "}", varValue);
}
}
return text;
}
}
```
在上面的示例中,我们首先定义了一个需要替换的 request body 和 SQL 条件变量,然后发送关联的接口请求,获取返回值,并将返回值存储到一个 Map 中。接下来,我们通过 parseVars 方法解析出需要替换的变量名,并将其存储到一个 List 中。最后,我们通过 replaceVars 方法遍历 varList,对于每个变量名,从 responseMap 中查找对应的值,并将其替换到原来的 request body 和 SQL 条件变量中。
阅读全文