Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建具有多个键参数值的查询参数体_Java_Rest_Rest Assured_Rest Assured Jsonpath - Fatal编程技术网

Java 如何创建具有多个键参数值的查询参数体

Java 如何创建具有多个键参数值的查询参数体,java,rest,rest-assured,rest-assured-jsonpath,Java,Rest,Rest Assured,Rest Assured Jsonpath,在下面的hashmap中,您可以看到,我有一个关键参数值列表,我需要为这些值自动生成多个值的案例,而无需重复hashmap 我是如何做到的: 第一个测试用例 HashMap<String, String> queryParam = new HashMap<>(); queryParam.put("Name", Name); queryParam.put("street","street" ); queryPara

在下面的hashmap中,您可以看到,我有一个关键参数值列表,我需要为这些值自动生成多个值的案例,而无需重复hashmap

我是如何做到的:

第一个测试用例

HashMap<String, String> queryParam = new HashMap<>();
queryParam.put("Name", Name);
queryParam.put("street","street" );
queryParam.put("city","city" );
queryParam.put("state", "state");
queryParam.put("postalCode","postalCode" );
queryParam.put("country", "country");
queryParam.put("email", "email");
queryParam.put("website","website" );
queryParam.put("phone", "phone");

Response response = request.auth().basic(uname, pwd).body(queryParam).contentType(APPLICATION_JSON)
            .post().then().extract()
            .response();
HashMap queryParam=newhashmap();
queryParam.put(“Name”,Name);
queryParam.put(“街道”、“街道”);
queryParam.put(“城市”、“城市”);
queryParam.put(“state”、“state”);
queryParam.put(“postalCode”、“postalCode”);
queryParam.put(“国家”、“国家”);
queryParam.put(“电子邮件”、“电子邮件”);
queryParam.put(“网站”、“网站”);
queryParam.put(“电话”、“电话”);
Response Response=request.auth().basic(uname,pwd).body(queryParam).contentType(APPLICATION_JSON)
.post().then().extract()
.response();
现在,如果您看到上面的hashmap,它有强制参数,一些可选参数,然后每个参数都有不同的验证。现在它的术语是用每个键覆盖所有的测试用例,上面的haspmap是重复的,值或键是变化的。我想用一种更好、更高效的方式来实现这一点。

您应该使用Java POJO,而不是使用Map。使用构造函数设置默认值,然后使用setter更改值。效率更高

还有一件事,您可以应用Factory设计模式为每个测试用例构建具有所需值的对象

测试示例

@Test
void test1() {
    QueryObject query = QueryObjectFactory.getDefaultValue();

    Response res = given().contentType(ContentType.JSON)
            .body(query)
            .post("to_your_api_endpoint");
}
工厂级

public class QueryObjectFactory {

    public static QueryObject getDefaultValue() {
        QueryObject queryObject = new QueryObject();
        queryObject.setName("name");
        queryObject.setStreet("street");
        queryObject.setCity("city");
        queryObject.setCountry("country");
        queryObject.setState("state");
        queryObject.setPostalCode("postalCode");
        queryObject.setEmail("email");
        queryObject.setWebsite("website");
        queryObject.setPhone("phone");
        return queryObject;
    }
}
波乔 注意:我使用lombok生成getter和getter-->以减少POJO类的复杂性

import lombok.Data;

@Data
public class QueryObject {
    private String name;
    private String street;
    private String city;
    private String state;
    private String postalCode;
    private String country;
    private String email;
    private String website;
    private String phone;
}

我不清楚你想做什么。您的代码片段不是一个测试用例——它只是显示您进行HTTP调用并向其传递一些URL参数。您正在测试请求的接收者吗?你想在上面测试什么?变量/可选参数是如何进入的?何时执行api测试用例将验证不同的验证组合和错误代码。为此,创建上述示例请求。问题是,若需要做同样的事情,那个么需要创建多少个hashmaps来为这个请求创建多个测试用例。现在说得通吗?不,对不起,还是说不通。您似乎在征求关于需要编写多少/哪些测试用例(或如何更好地编写它们)以满足某些未知需求的建议。如果没有更多关于您正在使用的功能的详细信息,我认为我们无法帮助您。这听起来更像是代码审查站点的问题,而不是堆栈溢出?不,我不是问需要创建多少测试用例,我是说我无法创建一个通用haspmap来测试多个场景,同时更改哈希映射密钥对值。感谢您的尝试。问题-关于龙目山的数据将如何变化。我从来没有这样使用过它,希望您能提供指导。Lombok将生成诸如getter、setter、constructor、toString、hashCode等代码。。。在运行时基于您放入类中的注释。基本上,这有助于我减少POJO的冗长。