url:http://www.ck.org/lemon/html/index2.html
相关页面:caseList.html
suite:测试套件表
id:主键,自动增长。
【核心】project_id:外键。项目id。
【核心】name:套件名称。
description:关于套件的简单说明。
【外键】create_user:创建者信息。mybatis-plus自动填充,创建用户就是登录用户。suite join user表。
create_time:创建时间。
一个套件suite对应多个用例cases。
cases:测试用例表
id:主键,自动增长。
【核心】suite_id:外键。测试套件id。
【核心】name:用例名称。
【外键】create_user:创建者信息。mybatis-plus自动填充,创建用户就是登录用户。cases join user表。
create_time:创建时间。
一个用例cases对应多个参数值case_param_value。
case_param_value:用例参数值表
id:主键,自动增长。
【核心】case_id:外键。测试套件id。
api_request_param_id:用例名称。
api_request_param_value:用例名称。
【外键】create_user:创建者信息。mybatis-plus自动填充,创建用户就是登录用户。case_param_value join user表。
create_time:创建时间。
spring有事务管理的,第2步和第3步是同一事务。要么同时提交,要么同时回滚。
@EnableTransactionManagement底层是支持注解的事务,它会在所有的业务层方法上面加上一个@Transactional,表示这个方法里面执行的所有代码就是在同一个事务当中。
不是手动去提交事务,而是全面托管给spring。
可参阅:spring的@Transactional注解详细用法
在com.one.controller下修改类SuiteController.java的代码如下:
package com.one.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.one.common.Result;
import com.one.pojo.ApiClassification;
import com.one.pojo.Suite;
import com.one.service.SuiteService;
/**
*
* 前端控制器
*
*
* @author annie
* @since 2020-02-16
*/
@RestController
@RequestMapping("/suite")
public class SuiteController {
@Autowired
SuiteService suiteService;
@GetMapping("/listAll")
public Result findAll(Integer projectId){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("project_id", projectId);
List<Suite> list = suiteService.list(queryWrapper);
return new Result("1",list);
}
}
CasesController.java的代码修改如下:
package com.one.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.one.common.ApiVO;
import com.one.common.Result;
import com.one.pojo.ApiRequestParam;
import com.one.pojo.CaseParamValue;
import com.one.pojo.Cases;
import com.one.service.CaseParamValueService;
import com.one.service.CasesService;
/**
*
* 前端控制器
*
*
* @author annie
* @since 2020-02-16
*/
@RestController
@RequestMapping("/cases")
public class CasesController {
@Autowired
CasesService casesService;
@PostMapping("/add")
public Result add(Cases caseVo, ApiVO apiRunVO){
//添加到cases
casesService.add(caseVo,apiRunVO);
return new Result("1","添加测试集成功");
}
}
CasesService.java的代码修改如下:
package com.one.service;
import com.one.common.ApiVO;
import com.one.pojo.Cases;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* 服务类
*
*
* @author annie
* @since 2020-02-16
*/
public interface CasesService extends IService<Cases> {
public void add(Cases caseVo, ApiVO apiRunVO);
}
CasesServiceImpl.java的代码修改如下:
package com.one.service.impl;
import com.one.pojo.ApiRequestParam;
import com.one.pojo.CaseParamValue;
import com.one.pojo.Cases;
import com.one.common.ApiVO;
import com.one.common.Result;
import com.one.mapper.CasesMapper;
import com.one.service.CaseParamValueService;
import com.one.service.CasesService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* 服务实现类
*
*
* @author annie
* @since 2020-02-16
*/
@Service
public class CasesServiceImpl extends ServiceImpl<CasesMapper, Cases> implements CasesService {
@Autowired
CaseParamValueService caseParamValueService;
public void add(Cases caseVo, ApiVO apiRunVO){
//添加到cases
this.save(caseVo);
//批量添加到case_param_value
List<ApiRequestParam> requestParams = apiRunVO.getRequestParams();
List<CaseParamValue> caseParamValues = new ArrayList<CaseParamValue>();
for(ApiRequestParam apiRequestParam : requestParams){
CaseParamValue caseParamValue = new CaseParamValue();
caseParamValue.setCaseId(caseVo.getId());
caseParamValue.setApiRequestParamId(apiRequestParam.getId());
caseParamValue.setApiRequestParamValue(apiRequestParam.getValue());
caseParamValues.add(caseParamValue);
}
caseParamValueService.saveBatch(caseParamValues);
}
}
问题:json请求参数,单引号,存字符串到数据库 run——string。
问题:MultiValueMap传过来的{“json”:["{‘projectId’:15,‘name’:‘xxx’}"]}。
这个格式直接json转java是失败的,需要对这个不良的串进行截取,只要{‘projectId’:15,‘name’:‘xxx’}。
修改ApiServiceImpl.java中的run方法,body2和4要分开处理,再加一个else if。
这里需要再写一个else if,如果字符串没值,是2这种类型的,执行以下两句,如果字符串有值,把下面第一句话改掉。把字符串写在这里,代替bodyParams,其他一概不要动。
同时,需要修改ApiClassificationController.java中的add2方法。这边如果是通用的,就不需要再截取了,这几句代码就可以注释掉了。
问题:apiEdit 解决本身有参数,然后在这个基础上再添加参数的时候——去除list中属性全为null的元素
解决思路一:编辑页面,所有地方干脆不用requestParams大集合,用它的子集。
现在出现的问题是,一会儿是requestParams,一会儿是bodyParams,一会儿是headerParams。
序号requestParams[0],bodyParams[1],headerParams[2]。有可能bodyParams[0]为空,就会造成数据库插入异常。就需要把bodyParams[0]为空的,在后端把它删除。
对象为null,与对象属性为null,是不一样的。目前就是bodyParams[0]这个对象是有的,但是这个对象的属性为空null,就需要把它删除。