java自动化测试框架第三篇-如何处理复杂的传参

2020-06-01  本文已影响0人  gz_tester

简单的传参

1. 使用场景

image.png

2.解决办法

...

@Data
@EqualsAndHashCode(callSuper = true)
public class AddBody extends Base {

  /** 劳务公司编码 */
  private String baseLabourCode;

  /** 姓名*/
  private String name;
}
...

3. 用例引用

...
    AddBody addBody = new AddBody();
    addBody.setBaseLabourCode("Test");
    addBody.setName("测试用户");

    Response res=context.getBean(Add.class).setBody(addBody).request();

    Assert.assertEquals(res.getStatusCode(), 200, "接口返回状态码!=200");
    Assert.assertEquals(res.getBody().jsonPath().getString("message"), "成功");
...

body中带object的传参

1. 使用场景

一般的传参我们可以简单处理;但是有些接口是这种比较复杂的传参,如下图所示,此接口是由两个object组成,且每个object下都有参数


image.png

2.解决办法

  1. 在request层,定义一个与目标相同结构的内部类,如果有其他接口同样需要这个类,可以提出为一个外部类
  2. 示例代码
...

@Data
@EqualsAndHashCode(callSuper = true)
public class SaveTalentBody extends Base {

  /** 人员信息 */
  private Person person;

  /** 人员社会关系 */
  private List<PersonSocialRelation> personSocialRelations;

  @Data
  @EqualsAndHashCode(callSuper = true)
  public static class Person extends Base {

    /** 主键id */
    private String id;

    /** 姓名 */
    private String name;
  }

  @Data
  public static class PersonSocialRelation {

    /** 称谓 */
    private String relations;

    /** 姓名 */
    private String name; 
  }

...
}

3. 用例引用

  1. 封装用例的时候,就可以先设置object参数,再设置body参数
...
private String getId() {
    // 设置Person数据
    SaveTalentBody.Person person = new SaveTalentBody.Person();
    person.setName("公子" + CommonUtils.randomString(9999));


    // 设置body
    SaveTalentBody body = new SaveTalentBody();
    body.setPerson(person);

    // 使用工厂接口可以快速创建一个Api实例
    Response res = context.getBean(SaveTalent.class).setBody(body).request();

    Assert.assertEquals(res.getStatusCode(), 200, "人才库新增员工,返回状态码!=200");
    Assert.assertEquals(res.getBody().jsonPath().getString("message"), "成功");

    // 取出返回报文中的id,作为下一个接口的传参
    return res.getBody().jsonPath().getString("result.id");
  }
...
上一篇下一篇

猜你喜欢

热点阅读