问题:接口入参,需要将入参全部改变为某一个特定值,入参字段总数和名称都为不确定
测试用例名称1:所有字段都为空; 测试用例名称2:所有入参都为特殊字符:*;
接口入参: {key1=value1, key2=value2, key3=value3, key4=value4} 备注:不限入参的参数数量(可以适应所有接口)
解决方案思路: 1.只改每一个键值对的value值,而key不变 2.需要遍历map里面的每一个键值对,获取到所有的value 3.将或者到的value值做修改 4.将新的键值对放到一个新的map里面
迭代器引入:
package test;
import com.alibaba.fastjson.JSON;
import org.testng.annotations.Test;
import util.JsonUtil;
import util.requestAll;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapTest {
String URL = "https://reqres.in";
String post_001 = URL +"/api/users";
public static Map<String, Object> main(String value_2) {
Map<String, Object> map_1 = new HashMap<>();
Map<String, Object> map_2 = new HashMap<>();
map_1.put("key1", "value1");
map_1.put("key2", "value2");
map_1.put("key3", "value3");
map_1.put("key4", "value4");
System.out.println("使用entrySet()遍历");
Iterator it = map_1.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry =(Map.Entry) it.next();
Object key_1 = entry.getKey();
Object value_1 = entry.getValue();
System.out.println("key="+key_1+" value"+value_1);
map_2.put((String) key_1,value_2);
}
return map_2;
}
@Test
public void Test_00001() throws IOException {
Map<String,Object> map_3 = main("");
String postResult = requestAll.request(post_001, JSON.toJSONString(map_3));
Map postResultMap = JsonUtil.json2Map(postResult);
System.out.println(JSON.toJSONString(map_3));
System.out.println(postResult);
}
@Test
public void Test_00002() throws IOException {
Map<String,Object> map_3 = main("*");
String postResult = requestAll.request(post_001, JSON.toJSONString(map_3));
Map postResultMap = JsonUtil.json2Map(postResult);
System.out.println(JSON.toJSONString(map_3));
System.out.println(postResult);
}
}
结果打印出来
把过程打印一下:
把代码里面的注释打开就看到。
补充: 1.能否做成可以自己随便输入的?-----可以操作,但是回归自动化不用经常改,写死即可,多几个test 2.对于字段参数少的就duck不必这么麻烦。目前项目是一个接口上百个字段,节省大量时间。
|