【问题标题】:How to Post the below request using RestAssured in selenium如何在 selenium 中使用 RestAssured 发布以下请求
【发布时间】:2018-07-09 12:30:20
【问题描述】:

如何在 selenium 中使用 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", "");

  }

【问题讨论】:

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


    【解决方案1】:

    希望下面的代码能解决你的问题。

        @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);
    }
    

    【讨论】:

      【解决方案2】:

      更好的方法是,从 POJO/模型文件构造 json,然后将其传递给测试。这样,意图就可以明确分离,并且将来如果您想验证该类型的任何响应,您可以简单地反序列化并使用 POJO 的 getter 获取值。

      【讨论】:

      • 你能用上面代码的例子解释一下吗?我不明白你。谢谢。
      【解决方案3】:

      例如,如果你的 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 构建您的有效负载并将其作为参数传递给您的测试方法。 这将使您的代码更具可读性、可维护性、可扩展性......

      这背后的想法是测试的意图不应该被污染,并且不同实体的职责之间会有明确的分离。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 2020-10-25
        相关资源
        最近更新 更多