From ad3e95bd7321e9ea64ee7e1820a861998bed0322 Mon Sep 17 00:00:00 2001 From: liangdaliang Date: Wed, 19 Mar 2025 13:09:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E4=BE=8B=E7=BC=96=E6=8E=92=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/controller/TestCaseController.java | 7 ++- test-ui/src/views/test/case/detail/index.vue | 4 +- test-ui/src/views/test/case/detail/page1.vue | 18 ++++--- test-ui/src/views/test/case/detail/page2.vue | 49 +++++++++++++++++-- test-ui/src/views/test/case/detail/step.vue | 19 +++++-- 5 files changed, 81 insertions(+), 16 deletions(-) diff --git a/test-test/src/main/java/com/test/test/controller/TestCaseController.java b/test-test/src/main/java/com/test/test/controller/TestCaseController.java index df7f278..0f3f7fb 100644 --- a/test-test/src/main/java/com/test/test/controller/TestCaseController.java +++ b/test-test/src/main/java/com/test/test/controller/TestCaseController.java @@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.concurrent.CompletableFuture; /** * 用例Controller @@ -87,6 +88,10 @@ public class TestCaseController extends BaseController { @PostMapping("/run") public AjaxResult run(@RequestBody IDQO qo) { log.info("执行用例 id:{}, jmeterHomePath:{}", qo.getId(), jmeterHomePath); - return success(testCaseService.executeTestCaseById(qo.getId(), jmeterHomePath)); + // 异步执行任务 + CompletableFuture.runAsync(() -> { + testCaseService.executeTestCaseById(qo.getId(), jmeterHomePath); + }); + return toAjax(true); } } diff --git a/test-ui/src/views/test/case/detail/index.vue b/test-ui/src/views/test/case/detail/index.vue index 00ce270..ca56715 100644 --- a/test-ui/src/views/test/case/detail/index.vue +++ b/test-ui/src/views/test/case/detail/index.vue @@ -6,7 +6,7 @@ - + @@ -96,7 +96,7 @@ export default { }).then(res => { this.$message.success("修改成功"); this.loading = false; - this.$tab.closeOpenPage({path: "/case"}); + // this.$tab.closeOpenPage({path: "/case"}); }) } } diff --git a/test-ui/src/views/test/case/detail/page1.vue b/test-ui/src/views/test/case/detail/page1.vue index 88c5c7f..c22ef36 100644 --- a/test-ui/src/views/test/case/detail/page1.vue +++ b/test-ui/src/views/test/case/detail/page1.vue @@ -99,7 +99,7 @@ @@ -130,9 +130,6 @@ - - - @@ -206,7 +203,7 @@ import {getCaseStepResultLog} from "@/api/test/caseStep"; export default { components: {FolderPage, JsonEditorVue, codemirror}, - dicts: ['http_method', 'http_protocol','extract_type','extract_object','assert_condition'], + dicts: ['http_method', 'http_protocol','extract_type','assert_condition'], props: { form: { type: Object @@ -231,6 +228,16 @@ export default { pageSize: 10, groupId: null, }, + extract_object: [{ + value: '${RESPONSE_BODY}', + label: '${RESPONSE_BODY}' + }, { + value: '${RESPONSE_HEADER}', + label: '${RESPONSE_HEADER}' + }, { + value: '${RESPONSE_CODE}', + label: '${RESPONSE_CODE}' + }], resultLog: { requestHeader: '', requestBody: '', @@ -238,7 +245,6 @@ export default { responseBody: '', sqlResult: '' }, - title: '111111', activeNames: 'requestHeader', activeTabs: 'requestHeader', editorOptions: { diff --git a/test-ui/src/views/test/case/detail/page2.vue b/test-ui/src/views/test/case/detail/page2.vue index 4448fe9..c234cd0 100644 --- a/test-ui/src/views/test/case/detail/page2.vue +++ b/test-ui/src/views/test/case/detail/page2.vue @@ -20,12 +20,18 @@ @@ -39,6 +45,15 @@ + + + + + + + + + @@ -54,7 +69,10 @@ @@ -79,9 +97,11 @@ import "codemirror/lib/codemirror.css"; import "codemirror/mode/sql/sql"; // 语言模式 import "codemirror/theme/dracula.css"; import "codemirror/addon/display/autorefresh"; +import {getCaseStepResultLog} from "@/api/test/caseStep"; export default { components: { codemirror }, + dicts: ['extract_type','assert_condition'], props: { form: { type: Object @@ -93,6 +113,19 @@ export default { data() { return { activeName: "sql", + extract_object: [{ + value: '${RESULT_DATA}', + label: '${RESULT_DATA}' + }], + resultLog: { + requestHeader: '', + requestBody: '', + responseHeader: '', + responseBody: '', + sqlResult: '' + }, + activeNames: 'sqlResult', + activeTabs: 'sqlResult', editorOptions: { autoRefresh: true, mode: "sql", // 代码语言 @@ -102,6 +135,16 @@ export default { } } }, + methods: { + handleLogChange(val) { + const selectedItem = this.form.testCaseResultList.find(item => item.title === val); + if (selectedItem) { + getCaseStepResultLog(selectedItem.id).then(res => { + this.resultLog = res.data; + }); + } + }, + } } diff --git a/test-ui/src/views/test/case/detail/step.vue b/test-ui/src/views/test/case/detail/step.vue index b1e5718..def65c4 100644 --- a/test-ui/src/views/test/case/detail/step.vue +++ b/test-ui/src/views/test/case/detail/step.vue @@ -1,14 +1,18 @@