提交 26458230 authored 作者: Matrix's avatar Matrix

feat(用例执行器): 增加了TestCaseBTO对象,用来表述一条测试用例数据

上级 0a387cd5
...@@ -13,14 +13,13 @@ import org.matrix.actuators.httpclient.HttpRequestDetail; ...@@ -13,14 +13,13 @@ import org.matrix.actuators.httpclient.HttpRequestDetail;
import org.matrix.actuators.httpclient.HttpResponseDetail; import org.matrix.actuators.httpclient.HttpResponseDetail;
import org.matrix.actuators.usecase.CaseActuator; import org.matrix.actuators.usecase.CaseActuator;
import org.matrix.database.entity.DynamicVariable; import org.matrix.database.entity.DynamicVariable;
import org.matrix.database.entity.TestCase; import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.service.IConnectService; import org.matrix.database.service.IConnectService;
import org.matrix.database.service.IDynamicVariableService; import org.matrix.database.service.IDynamicVariableService;
import org.matrix.database.service.ITestCaseService; import org.matrix.database.service.ITestCaseService;
import org.matrix.database.service.ITestDataService;
import org.matrix.enums.DynamicVarType; import org.matrix.enums.DynamicVarType;
import org.matrix.exception.GlobalException; import org.matrix.exception.GlobalException;
import org.matrix.socket.LogQueue;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -39,6 +38,7 @@ import static org.springframework.util.CollectionUtils.isEmpty; ...@@ -39,6 +38,7 @@ import static org.springframework.util.CollectionUtils.isEmpty;
* @since 2022/1/7 at 5:49 PM * @since 2022/1/7 at 5:49 PM
* Suffering is the most powerful teacher of life. * Suffering is the most powerful teacher of life.
*/ */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
@Slf4j @Slf4j
@Component @Component
@AllArgsConstructor @AllArgsConstructor
...@@ -63,6 +63,7 @@ public class SqlExpActuator implements Actuator { ...@@ -63,6 +63,7 @@ public class SqlExpActuator implements Actuator {
private final IConnectService connectService; private final IConnectService connectService;
private final IDataSourceService dataSourceService; private final IDataSourceService dataSourceService;
private final ITestCaseService caseService; private final ITestCaseService caseService;
private final ITestDataService dataService;
/** /**
* 解析给定的动态变量ByName * 解析给定的动态变量ByName
...@@ -136,10 +137,9 @@ public class SqlExpActuator implements Actuator { ...@@ -136,10 +137,9 @@ public class SqlExpActuator implements Actuator {
* @return 解析后的字符串 * @return 解析后的字符串
*/ */
private String caseHandler(Long envId, Long projectId, DynamicVariable dynamicVar) { private String caseHandler(Long envId, Long projectId, DynamicVariable dynamicVar) {
long caseId = Long.parseLong(dynamicVar.getDetail()); long caseDataId = Long.parseLong(dynamicVar.getDetail());
TestCase testCase = Optional.of(caseService.getById(caseId)) TestCaseBTO caseBTO = dataService.toCaseBTO(caseDataId);
.orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId))); HttpResponseDetail responseDetail = (HttpResponseDetail) caseActuator.executeTestCase(caseBTO, envId, projectId)
HttpResponseDetail responseDetail = (HttpResponseDetail) caseActuator.executeTestCase(testCase, envId, projectId)
.getBaseTestCaseRequestDetail(); .getBaseTestCaseRequestDetail();
return responseDetail.getResponseBody(); return responseDetail.getResponseBody();
} }
......
package org.matrix.database.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* TestCaseBTO. 单条数据的测试用例对象
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2022/2/22 at 4:39 PM
* Suffering is the most powerful teacher of life.
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestCaseBTO {
/**
* 测试用例
*/
private TestCase testCase;
/**
* 单条测试数据
*/
private TestData testData;
}
package org.matrix.database.service; package org.matrix.database.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.entity.TestData; import org.matrix.database.entity.TestData;
/** /**
...@@ -10,5 +11,18 @@ import org.matrix.database.entity.TestData; ...@@ -10,5 +11,18 @@ import org.matrix.database.entity.TestData;
* @since 2022/2/22 at 3:05 PM * @since 2022/2/22 at 3:05 PM
* Suffering is the most powerful teacher of life. * Suffering is the most powerful teacher of life.
*/ */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
public interface ITestDataService extends IService<TestData> { public interface ITestDataService extends IService<TestData> {
/**
* 根据testData主键id 转换出TestCaseBTO对象,多用于动态参数绑定中
* @param testDataId testData的主键id
* @return {@link TestCaseBTO} 特指某个单条数据的测试用例,多用于动态参数绑定中
*/
TestCaseBTO toCaseBTO(Long testDataId);
/**
* {{@link #toCaseBTO(Long)}} 的重载方法
*/
TestCaseBTO toCaseBTO(TestData testData);
} }
package org.matrix.database.service.impl; package org.matrix.database.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.entity.TestData; import org.matrix.database.entity.TestData;
import org.matrix.database.mapper.TestCaseMapper;
import org.matrix.database.mapper.TestDataMapper; import org.matrix.database.mapper.TestDataMapper;
import org.matrix.database.service.ITestDataService; import org.matrix.database.service.ITestDataService;
import org.matrix.exception.GlobalException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Optional;
/** /**
* ITestDataServiceImpl. * ITestDataServiceImpl.
* *
...@@ -13,6 +19,50 @@ import org.springframework.stereotype.Service; ...@@ -13,6 +19,50 @@ import org.springframework.stereotype.Service;
* @since 2022/2/22 at 3:06 PM * @since 2022/2/22 at 3:06 PM
* Suffering is the most powerful teacher of life. * Suffering is the most powerful teacher of life.
*/ */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
@Service @Service
public class TestDataServiceImpl extends ServiceImpl<TestDataMapper, TestData>implements ITestDataService { public class TestDataServiceImpl extends ServiceImpl<TestDataMapper, TestData> implements ITestDataService {
private final TestDataMapper dataMapper;
private final TestCaseMapper caseMapper;
public TestDataServiceImpl(TestDataMapper dataMapper, TestCaseMapper caseMapper) {
this.dataMapper = dataMapper;
this.caseMapper = caseMapper;
}
/**
* 根据testData主键id 转换出TestCaseBTO对象,多用于动态参数绑定中
*
* @param testDataId testData的主键id
* @return {@link TestCaseBTO} 特指某个单条数据的测试用例,多用于动态参数绑定中
*/
@Override
public TestCaseBTO toCaseBTO(Long testDataId) {
TestData testData = Optional.ofNullable(dataMapper.selectById(testDataId))
.orElseThrow(() -> new GlobalException(String.format("没有找到testDataId = %d 的testData对象 ", testDataId)));
TestCase testCase = Optional.ofNullable(caseMapper.selectById(testData.getTestCaseId()))
.orElseThrow(() -> new GlobalException(String.format("在testDataId = %d的绑定对象中 没有找到testCaseId = %d 的testCase对象 ",
testDataId, testData.getTestCaseId())));
return new TestCaseBTO(testCase, testData);
}
/**
* {{@link #toCaseBTO(Long)}} 的重载方法
*
* @param testData 一条testData数据对象
*/
@Override
public TestCaseBTO toCaseBTO(TestData testData) {
TestCase testCase = Optional.ofNullable(caseMapper.selectById(testData.getTestCaseId()))
.orElseThrow(() -> new GlobalException(String.format("在testDataId = %d的绑定对象中 没有找到testCaseId = %d 的testCase对象 ",
testData.getId(), testData.getTestCaseId())));
return new TestCaseBTO(testCase, testData);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论