如何在硒中使用RestAssured发布以下请求

时间:2018-07-09 12:30:21

标签: selenium selenium-webdriver rest-assured rest-assured-jsonpath

如何使用硒中的RestAssured张贴以下请求。

请求如下:

{
  "ShipmentID": "",
 "ShipmentNumber": "123455-6", 
 "Comments": "",
 "LineIDs": [
    {
  "ShipmentDID": "",  
  "AssetNum": "759585",
  "FileC": "",
  "SerialN": "",
  "LineID": "5",
  "Status": "Accept",
  "TransferCancelComment": ""
}

下面是我使用过的代码,但是由于其中包含的属性很少,因此不确定如何继续使用“ LineID”。

@Test
 public void TransferIn() {

  RestAssured.baseURI="testurl.rest.com";
  RequestSpecification httpRequest = RestAssured.given();
  JSONObject requestparams=new JSONObject();
  try {
      requestparams.put("ShipmentID", "");
      requestparams.put("ShipmentNumber", "123455-6");
      requestparams.put("Comments", "");
      requestparams.put("LineIDs", "");

  }

3 个答案:

答案 0 :(得分:0)

希望以下代码可以解决您的问题。

    @Test
    public void TransferIn() {
        RestAssured.baseURI="testurl.rest.com";
        RequestSpecification httpRequest = RestAssured.given();
        JSONObject requestparams = new JSONObject();
        JSONArray lineIdsArray = new JSONArray();
        JSONObject lineIdObject = new JSONObject();
        try {
            requestparams.put("ShipmentID", "");
            requestparams.put("ShipmentNumber", "123455-6");
            requestparams.put("Comments", "");

            lineIdObject.put("ShipmentDID", "");
            lineIdObject.put("AssetNum", "759585");
            lineIdObject.put("FileC", "");
            lineIdObject.put("SerialN", "");
            lineIdObject.put("LineID", "5");
            lineIdObject.put("Status", "Accept");
            lineIdObject.put("TransferCancelComment", "");
            lineIdsArray.put(lineIdObject);

            requestparams.put("LineIDs", lineIdsArray);
        } catch (JSONException e) {

        }
        System.out.println(requestparams);
}

答案 1 :(得分:0)

更好的方法可能是,从POJO /模型文件构造json,然后将其传递给测试。这样,就可以清楚地分离出意图,将来如果要验证该类型的任何响应,只需使用POJO的getter进行反序列化并获取值即可。

答案 2 :(得分:0)

例如,如果您的json是

{
  "name":"Mohan",
  "age":21
}

您的POJO如下所示:

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

@SerializedName("name")
@Expose
private String name;
@SerializedName("age")
@Expose
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

}

我正在使用Google的GSON,它是序列化和反序列化库。使用POJO构造有效负载,并将其作为参数传递给测试方法。 这将使您的代码更具可读性,可维护性,可扩展性....

这背后的想法是测试的意图不应受到污染,不同实体的职责之间应有明确的区分。