【问题标题】:How to send String[] and String values on the same API's body using Rest Assured?如何使用 Rest Assured 在同一个 API 主体上发送 String[] 和 String 值?
【发布时间】:2019-07-17 13:26:03
【问题描述】:

我正在尝试使用 Rest-Assured 和 Java 为 POST API 创建测试自动化。

此 API 具有以下作为 Application/JSON 的主体:

{
    "billing_address": {
        "region": "Sao Paulo",
        "region_id": 123,
        "country_id": "BR",
        "street": ["Av Paulista"],
        "postcode": "10577",
        "city": "SAO PAULO",
        "telephone": "555-555-1111",
        "company": "Test test",
        "firstname": "Fernando",
        "lastname": "Alves",
        "document": "0123444064"
     }
}

在我的代码中,我开发了以下方法来发送此值和请求:

public void criarPF (String srtAmbiente, String srtAPI, String srtToken, String srtRegion, String srtRegionID, String srtCountryID, String srtStreet,
                    String srtPostcode, String srtCity, String srtTelephone, String srtCompany, String srtFirstname, String srtLastname, String srtDocument) {
                    
                    String uriBase = srtAmbiente;
                    String Api = srtAPI;
                    
                    Map<String, String> addressContent = new HashMap<String,String>();
                    addressContent.put("region", srtRegion);
                    addressContent.put("region_id", srtRegionID);
                    addressContent.put("country_id", srtCountryID);
                    addressContent.put("street", srtStreet);
                    addressContent.put("postcode", srtPostcode);
                    addressContent.put("city", srtCity);
                    addressContent.put("telephone", srtTelephone);
                    addressContent.put("company", srtCompany);
                    addressContent.put("firstname", srtFirstname);
                    addressContent.put("lastname", srtLastname);
                    addressContent.put("document", srtDocument);
               
                
                    Map<String, Object> postContent = new HashMap<String,Object>();
                    postContent.put("billing_address", addressContent);

                    
                    request = RestAssured.given().contentType(ContentType.JSON)
                            .header("Authorization", "Bearer "+srtToken).with().body(postContent);

我收到一条错误消息,指出“street”不是字符串,而是字符串[]。
那么,如何在同一个 API 的主体中发送 String 和 String[] 值?

【问题讨论】:

    标签: java api cucumber rest-assured


    【解决方案1】:

    您正在将street 设置为字符串值。改成这样:

    Map<String, Object> addressContent = new HashMap<>();
    addressContent.put("region", srtRegion);
    addressContent.put("region_id", srtRegionID);
    addressContent.put("country_id", srtCountryID);
    
    // Here wrap strStreet in a List
    addressContent.put("street", Arrays.asList(srtStreet));
    
    addressContent.put("postcode", srtPostcode);
    addressContent.put("city", srtCity);
    addressContent.put("telephone", srtTelephone);
    addressContent.put("company", srtCompany);
    addressContent.put("firstname", srtFirstname);
    addressContent.put("lastname", srtLastname);
    addressContent.put("document", srtDocument);
    

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2013-05-11
      • 2018-01-06
      • 2021-08-31
      相关资源
      最近更新 更多