問題:介面入參,需要將入參全部改變為某一個特定值,入參欄位總數和名稱都為不確定
測驗用例名稱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 {
//設定基礎請求引數,URL,
String URL = "https://reqres.in";
//介面地址 URL + 路徑
String post_001 = URL +"/api/users";
public static Map<String, Object> main(String value_2) {
//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");
// 1.使用entrySet()遍歷
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);
//System.out.println(map_2);
}
//System.out.println(map_1);
//System.out.println("修改之后的map");
//System.out.println(map_2);
return map_2; //把修改之后組裝好的map回傳給呼叫者
}
@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不必這么麻煩,目前專案是一個介面上百個欄位,節省大量時間,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292695.html
標籤:其他
上一篇:Python開發工具推薦
