当前位置: 首页 > 知识库问答 >
问题:

RestAssured:如果响应正文有额外的值,如何使用JSON模式验证响应正文?

巫马越彬
2023-03-14

我正在使用matchesJsonSchemaInClasspath验证json模式。如果响应主体具有schema中定义的相同值,则可以正常工作。json文件
如果响应正文有未在json模式中定义的EXTRA变量/值,则不会失败。如何使这个测试用例失败?

例如:
下面是具有预定义 JSON 架构的响应正文。

 {  
    "employee": {  
        "name":       "sonoo",   
        "salary":      56000,   
        "married":    true  
    }  
}  

如果响应正文给出了额外的值,例如电子邮件/电话,那么它仍然在传递。我需要让它失败。这是我的测试用例,如果响应正文返回额外值,则失败。如何验证此测试用例?

{  
    "employee": {  
        "name":       "Mike",   
        "salary":      56000,  
        "Phone": "+XXX",
        "email": "test@gmail.com",
        "married":    true  
    }  
}  

共有1个答案

公良鸿禧
2023-03-14

创建一个表示json的POJO类

public class Employee {
 private String name;
 private float salary;
 private boolean married;


 // Getter Methods 

 public String getName() {
  return name;
 }

 public float getSalary() {
  return salary;
 }

 public boolean getMarried() {
  return married;
 }

 // Setter Methods 

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

 public void setSalary(float salary) {
  this.salary = salary;
 }

 public void setMarried(boolean married) {
  this.married = married;
 }
}

使用以下放心命令反序列化响应

Employee emp = response.getBody().as(Employee.class);

当将电子邮件或电话号码等其他字段添加到响应正文时,上述命令将自动失败并抛出错误。

 类似资料:
  • 我是大一新生,请放心。我有一个获取响应体的简单测试,我想验证响应体是否与我的POJO类匹配。 这是我的测试: 这是我的POJO类: 那么如何验证响应体结构等于我的POJO类呢? 提前感谢

  • 我收到了针对我的API的错误请求的以下响应。我将RestAssured用于我的rest响应断言。 我需要验证响应的所有属性的值。我正在努力验证此路径:。我无法为它想出GPath。 以下是我所作的断言: 由于路径不正确,断言总是失败。

  • 我有一个测试场景,其中Web应用程序中的字段填充了来自json响应的数据。 例如- 为了实现这一点,我了解了RestAsure和HTTP客户端库,但我不确定如何发送请求部分或检索响应,因为在许多情况下响应非常大(超过150个名称值对)。 以下是我尝试过的: 现在,我在 Method.POST 行中遇到错误,它的显示语法错误也使我对是否有其他方法感到困惑。

  • 当我请求GET请求时,我得到了JSON响应,但这里我的要求是验证响应体的结构。 例如: 上面的响应有结构,所以我需要验证结构而不是键值对,我如何实现?

  • 在使用空手道框架进行API测试时,我在验证嵌套JSON响应时遇到了一些问题。 JSON响应: null def feed_cycle={item_type:'#string',title:'#string'} def feed_college_dept_branch={branch:'#string'} def feed_college={item_type:'#string',dept:'[]f

  • 我在用放心做API自动化。我想从API响应中获取值并传递给另一个java类, 这是我的测试类, 如何将此方法更改为另一种类型的无效值,或者如何在另一个java类中传递人员引用值