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

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

作者: gz_tester | 来源:发表于2020-06-01 17:18 被阅读0次

    简单的传参

    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");
      }
    ...
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/cvsnohtx.html