java自动化测试-接口响应内容处理技巧:json转DTO

背景:某个交易自动化案例需要检查关联系统的交易结果,可以通过接口请求结果来断言。
一般处理是转成json格式一层层获取自己想要的,但这样子很麻烦而且容易记错层级或字段。这里介绍一种非常通用且方便的方式。

假设接口返回数据如下:
{
“itemId”:3454234,
“specification”[{
“id”:234,
“price”:666.66}],
“attribute”[{
“attributeId”:212,
“name”:“中码”
}]
}

json转dto步骤如下:
1、先为里面层数据创建引用dto SpecificationDto 和AttributeDto
2、创建 ItemDto ,引用上述dto
3、把请求结果转成dto

1、先为底层数据创建引用dto SpecificationDto 和AttributeDto

import java.math.BigDecimal;
 
public class SpecificationDto {
private Long id;
private BigDecimal price;
public Long getid(){
return id;
}
public void setId(Long id) {
this.id = id;
}
public BigDecimal getprice() {
return price;
}
public void setprice(BigDecimal price){
this.price = price;
}}
public class AttributeDto {
private Long attributeid; 
private string name;

public Long getAttributeId() {
return attributeld;}
public void setAttributeId(Long attributeId) {
this.attributeId = attributeId;}

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

2、创建 ItemDto ,引用上述dto

import java.util.List;

public class ItemDto {
private Long itemId;
private List<SpecificationDto> specification; 
private List<AttributeDto> attribute;

public Long.getItemId() {
return itemid;}
public void setId(Long itemid) {
this.itemId = itemId;}

public List<specificationDto>getspecification( ){
return specification;}
public void setspecification(List<SpecificationDto>specification){
this.specification=specification;}

public List<AttributeDto>getAttribute() {
return attribute; }
public void setAttribute(List<AttributeDto>attribute) {
this.attribute =attribute;
}}

3、把请求结果转成dto

// 将接口返回数据res转成dto
ItemDto itemDto = JSONObject.parse0bject(res.toJSONString()ItenDto.class);
//过滤得到想要的规格数据
Specification specificationList = itenDto.getspecification().stream().filter(dto -> dto.getId().equals("234")).collect(Collectors.tolist());
//汇总统计返回规格的总价
BigDecimal tot = itemDto.getspecification().stream( ).map(dto -> dto.getProdVo1()).reduce(BigDecimal.ZERO,BigDecimal::add);

转dto的好处很多:

  • 代码少,可阅读性友好。
  • 输入xxDto.get会出现提示框,能快捷获取字段,不会出错。非常方便获取第n层的字段。
  • 通过stream api处理列表数据非常方便高效。
  • 如果需要汇总统计,自动转成bigDecimal类型后非常方便计算和统一。
  • 最最能取巧的是,一般开发也需要包装一样结构的dto数据,大部分时候,我们可以不用自己写dto,直接复制开发的文件过来用即可!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值