From 017d2d34700903a29760389f71a2bc87f91feb37 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Wed, 3 Feb 2021 09:22:09 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8A=E5=8F=AF=E4=BB=A5=E9=85=8D=E7=BD=AE=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81HTTP/HTTPS?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yi/master/coretest/message/protocol/HTTPTestClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java index 2fac106..d530498 100644 --- a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java +++ b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java @@ -586,7 +586,7 @@ public class HTTPTestClient extends TestClient { if (system != null && SystemConsts.DefaultBooleanIdentify.TRUE.getNumber().equals(system.getUseProxy())) { if (StringUtils.isNotBlank(system.getProxyHost()) && system.getProxyPort() != null ) { DefaultHttpClient client = getHttpClient(); - HttpHost proxy = new HttpHost(system.getProxyHost(), system.getProxyPort(), requestUrl.startsWith("https") ? "https" : "http"); + HttpHost proxy = new HttpHost(system.getProxyHost(), system.getProxyPort()); client.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy); // 是否需要认证 -- Gitee From 2890a1528fa98c498eec937b5cd72105f28d4bc0 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Feb 2021 15:37:45 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=8A=A8=E6=80=81=E7=BB=84=E5=90=88=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/action/AutoTestAction.java | 2 +- .../testconfig/bean/GlobalVariable.java | 20 ++- .../testconfig/enums/GlobalVariableType.java | 4 + .../constant/GlobalVariableConstant.java | 4 + .../message/protocol/HTTPTestClient.java | 2 +- .../message/test/MessageAutoTest.java | 52 ++++++- .../resource/message/chooseComplexScene.html | 61 ++++++++ .../resource/message/chooseComplexScene.js | 142 ++++++++++++++++++ src/main/webapp/resource/setting/variable.js | 48 +++++- .../resource/template/customTemplate.htm | 23 +++ update.md | 5 + 11 files changed, 349 insertions(+), 14 deletions(-) create mode 100644 src/main/webapp/resource/message/chooseComplexScene.html create mode 100644 src/main/webapp/resource/message/chooseComplexScene.js diff --git a/src/main/java/yi/master/business/message/action/AutoTestAction.java b/src/main/java/yi/master/business/message/action/AutoTestAction.java index 3e17db6..82056a9 100644 --- a/src/main/java/yi/master/business/message/action/AutoTestAction.java +++ b/src/main/java/yi/master/business/message/action/AutoTestAction.java @@ -121,7 +121,7 @@ public class AutoTestAction extends ActionSupport implements ModelDriven @@ -80,6 +81,7 @@ public class GlobalVariable implements Serializable { * randomString 两个数字,第一位表示字符串长度,第二位表示组成:0-只有大写字母 1-只有小写字母 2-大小写字母混合 3-数字和字母
* uuid 间隔符
* dynamicInterface 对应配置的JSON字符串 + * dynamicComplexInterface 对应配置的JSON字符串 * fileParameter 文件路径 */ private String value; @@ -396,6 +398,20 @@ public class GlobalVariable implements Serializable { return this.lastCreateValue; } + if (GlobalVariableType.dynamicComplexInterface.name().equalsIgnoreCase(this.variableType)) { + if (this.expiryDate != null && this.expiryDate.getTime() > System.currentTimeMillis() + && StringUtils.isNotBlank(this.lastCreateValue) + && !forceCreate) { + return this.lastCreateValue; + } + MessageAutoTest autoTest = (MessageAutoTest) FrameworkUtil.getSpringBean(MessageAutoTest.class); + + this.lastCreateValue = autoTest.dynamicComplexInterfaceGetValue(maps.get(GlobalVariableConstant.DYNAMIC_COMPLEX_INTERFACE_SCENE_ID) + , maps.get(GlobalVariableConstant.DYNAMIC_COMPLEX_INTERFACE_VALUE_NAME)); + update(); + return this.lastCreateValue; + } + if (GlobalVariableType.dbSql.name().equalsIgnoreCase(this.variableType)) { if (this.expiryDate != null && this.expiryDate.getTime() > System.currentTimeMillis() && StringUtils.isNotBlank(this.lastCreateValue) diff --git a/src/main/java/yi/master/business/testconfig/enums/GlobalVariableType.java b/src/main/java/yi/master/business/testconfig/enums/GlobalVariableType.java index 90debed..7b71849 100644 --- a/src/main/java/yi/master/business/testconfig/enums/GlobalVariableType.java +++ b/src/main/java/yi/master/business/testconfig/enums/GlobalVariableType.java @@ -53,6 +53,10 @@ public enum GlobalVariableType { * 动态接口 */ dynamicInterface, + /** + * 动态组合接口 + */ + dynamicComplexInterface, /** * 文件 */ diff --git a/src/main/java/yi/master/constant/GlobalVariableConstant.java b/src/main/java/yi/master/constant/GlobalVariableConstant.java index dcb336d..861cb29 100644 --- a/src/main/java/yi/master/constant/GlobalVariableConstant.java +++ b/src/main/java/yi/master/constant/GlobalVariableConstant.java @@ -41,6 +41,10 @@ public interface GlobalVariableConstant { String DYNAMIC_INTERFACE_SYSTEM_ID = "systemId"; String DYNAMIC_INTERFACE_SCENE_ID = "sceneId"; String DYNAMIC_INTERFACE_VALUE_EXPRESSION = "valueExpression"; + + /**动态组合接口*/ + String DYNAMIC_COMPLEX_INTERFACE_SCENE_ID = "complexSceneId"; + String DYNAMIC_COMPLEX_INTERFACE_VALUE_NAME = "valueName"; /**数据库取值*/ String DB_SQL_DB_ID = "dbId"; diff --git a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java index d530498..709ef2e 100644 --- a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java +++ b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java @@ -603,7 +603,7 @@ public class HTTPTestClient extends TestClient { } } } catch (Exception e) { - throw new RuntimeException("设置代理出错,请检查环境的代理配置", e); + throw new RuntimeException("设置代理出错,请检查测试环境的代理配置", e); } return null; diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index ed15655..f88f056 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -31,6 +31,7 @@ import yi.master.coretest.message.parse.MessageParse; import yi.master.coretest.message.process.MessageProcess; import yi.master.coretest.message.protocol.TestClient; import yi.master.coretest.message.protocol.entity.ClientTestResponseObject; +import yi.master.exception.YiException; import yi.master.util.FrameworkUtil; import yi.master.util.PracticalUtils; import yi.master.util.cache.CacheUtil; @@ -134,6 +135,40 @@ public class MessageAutoTest { return v; } + + /** + * 动态组合接口获取数据 + * @param complexSceneId + * @param valueName + * @return + */ + public String dynamicComplexInterfaceGetValue(String complexSceneId, String valueName) throws Exception { + if (StringUtils.isBlank(complexSceneId) || StringUtils.isBlank(valueName)) { + throw new YiException("变量参数不正确"); + } + Integer testUserId = 0; + try { + if (FrameworkUtil.getLoginUser() != null) { + testUserId =FrameworkUtil.getLoginUser().getUserId(); + } + } catch (Exception e) { + LOGGER.warn("当前测试进程无法获取到指定用户的测试配置,但是不影响测试进行,使用全局测试配置!"); + } + TestConfig config = testConfigService.getConfigByUserId(testUserId); + + ComplexScene complexScene = complexSceneService.get(Integer.valueOf(complexSceneId)); + if (complexScene == null) { + throw new YiException("指定的测试场景不存在或者已被删除,请检查!"); + } + + TestMessageScene messageScene = packageComplexRequestObject(complexScene, config, null, null); + Map vars = (Map) singleTestComplexScene(messageScene, null, true, true); + if (MapUtil.isNotEmpty(vars)) { + return vars.get(valueName); + } + + return null; + } /** * 单场景测试 @@ -241,10 +276,11 @@ public class MessageAutoTest { * @param testScene testScene 测试场景对象 * @param report report 测试报告对象 * @param ifDebug ifDebug 是否调试:调试时不保存结果到数据库 + * @param dynamicComplexInterface dynamicComplexInterface 是否是动态组合接口 * @return {@link Object} */ @SuppressWarnings("unchecked") - public Object singleTestComplexScene (TestMessageScene testScene, TestReport report, boolean ifDebug) { + public Object singleTestComplexScene (TestMessageScene testScene, TestReport report, boolean ifDebug, boolean dynamicComplexInterface) { List results = new ArrayList<>(); //获取httpclient,其他协议的暂时也走这个,但是不影响,后期需要针对不同协议的客户端做改动 DefaultHttpClient procotolClient = null; @@ -252,11 +288,11 @@ public class MessageAutoTest { //组合场景测试备注 StringBuilder complexMark = new StringBuilder(); - //组合场景中的场景是否为空 + //该组合场景测试上下文保存的变量 + Map saveVariables = new HashMap(); + //组合场景中的场景是否为空 if (testScene.getScenes().size() > 0) { allSuccessFlag = true; - //该组合场景测试上下文保存的变量 - Map saveVariables = new HashMap(); //停止标记 boolean stopFlag = false; @@ -357,10 +393,14 @@ public class MessageAutoTest { } } - if(testScene.getTestClient() != null) { testScene.getTestClient().putBackTestClient(procotolClient); } + + // 动态组合接口获取值 + if (dynamicComplexInterface) { + return saveVariables; + } //如果缺少场景(结果和场景数量不等),表明有某些场景设定的测试环境在原本的测试场景中已经被删除了或者直接执行了最好一个场景,此时,组合场景必须为测试失败状态并添加备注 if (results.size() != testScene.getScenes().size()) { @@ -645,7 +685,7 @@ public class MessageAutoTest { public void run() { //组合场景 if (testSceneT.getComplexFlag()) { - singleTestComplexScene(testSceneT, report, false); + singleTestComplexScene(testSceneT, report, false, false); //单场景 } else { TestResult result = singleTest(testSceneT, null); diff --git a/src/main/webapp/resource/message/chooseComplexScene.html b/src/main/webapp/resource/message/chooseComplexScene.html new file mode 100644 index 0000000..7e816b9 --- /dev/null +++ b/src/main/webapp/resource/message/chooseComplexScene.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + + + + + + +
ID
+
+
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/resource/message/chooseComplexScene.js b/src/main/webapp/resource/message/chooseComplexScene.js new file mode 100644 index 0000000..56bd20c --- /dev/null +++ b/src/main/webapp/resource/message/chooseComplexScene.js @@ -0,0 +1,142 @@ +var templateParams = { + tableTheads:["名称", "包含场景", "创建时间", "独立客户端测试","备注", "操作"], + btnTools:[] +}; + +var columnsSetting = [ + { + "data":null, + "render":function(data, type, full, meta){ + return checkboxHmtl(data.complexSceneName, data.id, "selectComplexScene"); + }}, + {"data":"id"}, + ellipsisData("complexSceneName"), + { + "data":"sceneNum", + "render":function(data, type, full, meta){ + var context = + [{ + type:"default", + size:"M", + markClass:"show-scenes", + name:data + }]; + return btnTextTemplate(context); + } + }, + ellipsisData("createTime"), + { + "data":"newClient", + "render":function(data){ + var option = { + "0":{ + btnStyle:"success", + status:"是" + }, + "1":{ + btnStyle:"default", + status:"否" + }, + "default":{ + btnStyle:"default", + status:"否" + } + + }; + return labelCreate(data, option); + } + }, + { + "data":"mark", + "className":"ellipsis", + "render":function(data, type, full, meta) { + if (data != "" && data != null) { + return '' + data + ''; + } + return ""; + } + }, + { + "data":null, + "render":function(data, type, full, meta){ + return btnIconTemplate( + [{ + title:"组合场景测试", + markClass:"object-test", + iconFont:"" + },{ + title:"选择", + markClass:"choose-this-scene", + iconFont:"" + }]); + } + } +]; +var eventList = { + ".object-test":function(){//组合场景测试 + var data = table.row( $(this).parents('tr') ).data(); + layer.confirm('确认测试该组合场景吗?
组合场景的测试时间长度和包含的场景数有关,请耐心等待测试完成!', {title:'提示', icon:3}, function(index){ + var loadIndex = layer.msg('正在测试,请耐心等待...', {icon:16, time:9999999, shade:0.4}); + $.post(REQUEST_URL.AUTO_TEST.TEST_COMPLEX_SCENE_URL, {id:data.id}, function(json){ + layer.close(loadIndex); + if (json.returnCode == 0 && json.data != null) { + var results = json.data; + if (json.data.length == undefined) { + results = json.data.complexSceneResults; + } + layer_show(data.complexSceneName + '-测试结果 点击查看对应详情', templates["complex-scene-results-view"]({results:results}), 600, 300, 1, function(layero, index){ + layero.find('.result-view').bind('click', function(){ + renderResultViewPage(results[$(this).attr("data-id")]); + }); + }, function(index, layero) { + layero.find('.result-view').unbind('click'); + }, null) + } else { + layer.alert(strIsNotEmpty(json.msg) ? json.msg : '测试出错!', {icon:5}); + } + }); + layer.close(index); + }); + }, + ".show-scenes":function() { //管理组合中的测试场景 + var data = table.row( $(this).parents('tr') ).data(); + layer_show(data.complexSceneName + "-组合场景设定", "messageScene.html?complexSceneId=" + data.id, null, null, 2, null, null, function() { + refreshTable(); + }) + }, + ".choose-this-scene": function() { + var data = table.row( $(this).parents('tr') ).data(); + choosedCallBackFun(data); + parent.layer.close(parent.layer.getFrameIndex(window.name)); + } +}; + +var choosedCallBackFun; +var mySetting = { + eventList:eventList, + templateCallBack:function(df){ + choosedCallBackFun = parent[GetQueryString("callbackFun")]; + df.resolve(); + }, + listPage:{ + listUrl:REQUEST_URL.COMPLEX_SCENE.LIST, + tableObj:".table-sort", + columnsSetting:columnsSetting, + columnsJson:[0, 3, 6, 7], + dtOtherSetting:{ + "bStateSave": false + } + }, + templateParams:templateParams +}; + +$(function(){ + publish.renderParams = $.extend(true,publish.renderParams,mySetting); + publish.init(); +}); + +/**********************************************************************************************************************/ + + + + diff --git a/src/main/webapp/resource/setting/variable.js b/src/main/webapp/resource/setting/variable.js index 6ea4d0f..e9d9cf6 100644 --- a/src/main/webapp/resource/setting/variable.js +++ b/src/main/webapp/resource/setting/variable.js @@ -149,6 +149,18 @@ var variableTypeInfo = { keyIsNull:false, ifCreate:true }, + dynamicComplexInterface:{ + text:"动态组合接口", + settingValue:{ + complexSceneId:"", + valueName:"", + complexSceneName:"" + }, + layerHeight:"320", + layerWidth: "700", + keyIsNull:false, + ifCreate:true + }, fileParameter: { text:"文件参数", settingValue:"", @@ -237,6 +249,7 @@ var templateParams = { {value:"randomString", text:variableTypeInfo.randomString.text}, {value:"uuid", text:variableTypeInfo.uuid.text}, {value:"dynamicInterface", text:variableTypeInfo.dynamicInterface.text}, + {value:"dynamicComplexInterface", text:variableTypeInfo.dynamicComplexInterface.text}, {value:"fileParameter", text:variableTypeInfo.fileParameter.text}, {value:"dbSql", text:variableTypeInfo.dbSql.text}] }] @@ -386,6 +399,10 @@ var columnsSetting = [ status:"动态接口", btnStyle:"danger" }, + dynamicComplexInterface:{ + status:"动态组合接口", + btnStyle:"danger" + }, fileParameter:{ status:"文件参数", btnStyle:"success" @@ -516,13 +533,17 @@ var eventList = { layer.alert('常量值:
' + data.value, {icon:1, anim:5, offset: '120px', title:data.variableName}); return; } + $(".page-container").spinModal(); $.post(REQUEST_URL.GLOBAL_VARIABLE.CREATE_VARIABLE, {variableId:data.variableId}, function(json) { + $(".page-container").spinModal(false); if (json.returnCode == 0) { layer.alert('
生成变量成功:
' + json.msg + '
' , {icon:1, anim:5, title:data.variableName, btn: ['强制刷新', '确定'], offset: '120px'} ,function(index, layero){ + $(".page-container").spinModal(); $.post(REQUEST_URL.GLOBAL_VARIABLE.CREATE_VARIABLE, {variableId:data.variableId, forceCreate:true}, function(json){ - if (json.returnCode == 0) { + $(".page-container").spinModal(false); + if (json.returnCode == 0) { $(layero).find('#create-result').html('生成变量成功:
' + json.msg); } else { layer.close(index); @@ -701,6 +722,7 @@ function changeFormByVariableType (variableType) { case "relatedKeyWord": case "setRuntimeSetting": case "dynamicInterface": + case "dynamicComplexInterface": showOrHideInput('hidden', 'button', 'hidden', null); break; case "dbSql": @@ -801,7 +823,12 @@ function showSettingPage(title) { } }); }); - + + // 选择组合场景 + $(layero).find('#choose-complex-scene').click(function(){ + layer_show("选择组合场景", "../message/chooseComplexScene.html?callbackFun=chooseComplexScene", null, null, 2); + }); + //选择测试场景 $(layero).find('#choose-scene').click(function(){ layer_show("选择测试场景", "../advanced/chooseMessageScene.html?callbackFun=chooseTestScene¬Multiple=true", null, null, 2); @@ -821,8 +848,8 @@ function showSettingPage(title) { $("#objectSeqText").text(n); } - //动态接口 - if (i == "systemName" || i == "sceneName") { + //动态接口 动态组合接口 + if (i == "systemName" || i == "sceneName" || i == "complexSceneName") { $("#" + i + "Text").text(n); } } @@ -848,6 +875,19 @@ function chooseTestScene (sceneObj) { $('.dynamicInterface #sceneNameText').text(sceneObj.interfaceName + '-' + sceneObj.messageName + '-' + sceneObj.sceneName); } +/** + * 选择组合场景之后的回调 + * @param complexScene + */ +function chooseComplexScene(complexScene){ + if (complexScene == null) { + return false; + } + $('.dynamicComplexInterface #complexSceneId').val(complexScene.id); + $('.dynamicComplexInterface #complexSceneName').val(complexScene.complexSceneName); + $('.dynamicComplexInterface #complexSceneNameText').text(complexScene.complexSceneName); +} + /** * uuid生成 * @returns diff --git a/src/main/webapp/resource/template/customTemplate.htm b/src/main/webapp/resource/template/customTemplate.htm index 12878dd..ff69a2b 100644 --- a/src/main/webapp/resource/template/customTemplate.htm +++ b/src/main/webapp/resource/template/customTemplate.htm @@ -1120,6 +1120,29 @@ + +
+
+ 选择一个组合场景,保存组合场景执行后的某一个上下文保存的变量名称到全局变量,供其他地方使用。 + 同动态接口一样,在有效期内不会重复调用接口获取。 +
+
+
+ +
+ + + + +
+
+
+ +
+ +
+
+
diff --git a/update.md b/update.md index 9098274..4dca392 100644 --- a/update.md +++ b/update.md @@ -1,3 +1,8 @@ +### v1.1.3 +#### 2021.02.04 +- 全局变量增加动态组合接口类型 + + ### v1.1.2 #### 2021.01.30 - 在组合场景中的替换变量配置中,支持使用全局变量、数据池变量、测试集公共变量(使用格式为:${__变量名})、上下文变量(使用格式为:${变量名})以及常量,且可以自由组合放在一起使用,使用时注意变量替换的优先级即可; -- Gitee From 6637b9abe425de007a8f60af08d1c023fd69050b Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 5 Feb 2021 15:55:21 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update.md b/update.md index 4dca392..fac67ee 100644 --- a/update.md +++ b/update.md @@ -1,6 +1,6 @@ ### v1.1.3 #### 2021.02.04 -- 全局变量增加动态组合接口类型 +- 全局变量增加动态组合接口类型,可以指定组合场景的上下文变量作为全局输出变量,具体使用方法见操作手册; ### v1.1.2 -- Gitee From e84e2429ecfd59946a7e930e2f048b59c13b46d9 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Thu, 18 Feb 2021 18:12:38 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/yi/master/business/message/action/AutoTestAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/yi/master/business/message/action/AutoTestAction.java b/src/main/java/yi/master/business/message/action/AutoTestAction.java index 82056a9..5aa968a 100644 --- a/src/main/java/yi/master/business/message/action/AutoTestAction.java +++ b/src/main/java/yi/master/business/message/action/AutoTestAction.java @@ -256,7 +256,7 @@ public class AutoTestAction extends ActionSupport implements ModelDriven Date: Thu, 18 Feb 2021 18:25:28 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/yi/master/business/testconfig/bean/TestConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/yi/master/business/testconfig/bean/TestConfig.java b/src/main/java/yi/master/business/testconfig/bean/TestConfig.java index ab76805..1c6d022 100644 --- a/src/main/java/yi/master/business/testconfig/bean/TestConfig.java +++ b/src/main/java/yi/master/business/testconfig/bean/TestConfig.java @@ -345,9 +345,10 @@ public class TestConfig implements Serializable, Cloneable { TestConfig config = null; try { config = (TestConfig) super.clone(); + config.setDataPool(null); + config.setPoolItemIds(""); config.setRules(new HashSet<>()); } catch (Exception e) { - LOGGER.warn("clone exception!", e); } return config; -- Gitee From a6d22e44fc123b81d596c8262ed7bedba6ca2141 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 19 Feb 2021 18:30:51 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/action/AutoTestAction.java | 22 +++++++------------ .../message/action/TestSetAction.java | 4 ++-- .../testconfig/service/TestConfigService.java | 2 +- .../service/impl/PoolDataItemServiceImpl.java | 2 +- .../service/impl/TestConfigServiceImpl.java | 5 ++--- .../message/test/MessageAutoTest.java | 6 ++--- .../performance/PerformanceTestObject.java | 4 ++-- src/main/resources/applicationContext.xml | 1 + 8 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/main/java/yi/master/business/message/action/AutoTestAction.java b/src/main/java/yi/master/business/message/action/AutoTestAction.java index 5aa968a..f62914d 100644 --- a/src/main/java/yi/master/business/message/action/AutoTestAction.java +++ b/src/main/java/yi/master/business/message/action/AutoTestAction.java @@ -112,9 +112,9 @@ public class AutoTestAction extends ActionSupport implements ModelDriven testObjects = autoTest.packageRequestObject(task.getScene(), config, task.getSystem(), null); @@ -183,10 +183,10 @@ public class AutoTestAction extends ActionSupport implements ModelDriven { model.setUser(FrameworkUtil.getLoginUser()); if ("1".equals(model.getParented())) { //创建测试配置 - TestConfig config = (TestConfig) testConfigService.getConfigByUserId(0).clone(); + TestConfig config = (TestConfig) testConfigService.configByUserId(0).clone(); config.setConfigId(null); config.setUserId(null); testConfigService.save(config); @@ -180,7 +180,7 @@ public class TestSetAction extends BaseAction { TestConfig config = null; if ("0".equals(mode)) { - config = (TestConfig) testConfigService.getConfigByUserId(0).clone(); + config = (TestConfig) testConfigService.configByUserId(0).clone(); config.setConfigId(null); config.setUserId(null); testConfigService.save(config); diff --git a/src/main/java/yi/master/business/testconfig/service/TestConfigService.java b/src/main/java/yi/master/business/testconfig/service/TestConfigService.java index 5529afe..8a57581 100644 --- a/src/main/java/yi/master/business/testconfig/service/TestConfigService.java +++ b/src/main/java/yi/master/business/testconfig/service/TestConfigService.java @@ -10,5 +10,5 @@ public interface TestConfigService extends BaseService { * @param userId 0为系统默认配置 * @return */ - TestConfig getConfigByUserId(Integer userId); + TestConfig configByUserId(Integer userId); } diff --git a/src/main/java/yi/master/business/testconfig/service/impl/PoolDataItemServiceImpl.java b/src/main/java/yi/master/business/testconfig/service/impl/PoolDataItemServiceImpl.java index 6abb2f3..328b217 100644 --- a/src/main/java/yi/master/business/testconfig/service/impl/PoolDataItemServiceImpl.java +++ b/src/main/java/yi/master/business/testconfig/service/impl/PoolDataItemServiceImpl.java @@ -92,7 +92,7 @@ public class PoolDataItemServiceImpl extends BaseServiceImpl imple if (poolDataItem.getSceneSystem() == null) { throw new YiException("数据池[{}]自动获取数据出错:你必须为接口场景选择一个可用的测试环境", poolDataItem.getDataPool().getName()); } - TestConfig testConfig = testConfigService.getConfigByUserId(FrameworkUtil.getLoginUser().getUserId()); + TestConfig testConfig = testConfigService.configByUserId(FrameworkUtil.getLoginUser().getUserId()); Set testMessageScenes = messageAutoTest.packageRequestObject(poolDataItem.getMessageScene(), testConfig, poolDataItem.getSceneSystem(), null); if (CollUtil.isEmpty(testMessageScenes)) { throw new YiException("数据池[{}]自动获取数据出错:通过接口获取数据出错:无法解析要使用的接口场景", poolDataItem.getDataPool().getName()); diff --git a/src/main/java/yi/master/business/testconfig/service/impl/TestConfigServiceImpl.java b/src/main/java/yi/master/business/testconfig/service/impl/TestConfigServiceImpl.java index 2956453..f039640 100644 --- a/src/main/java/yi/master/business/testconfig/service/impl/TestConfigServiceImpl.java +++ b/src/main/java/yi/master/business/testconfig/service/impl/TestConfigServiceImpl.java @@ -2,7 +2,6 @@ package yi.master.business.testconfig.service.impl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import yi.master.business.base.service.impl.BaseServiceImpl; import yi.master.business.testconfig.bean.TestConfig; import yi.master.business.testconfig.dao.TestConfigDao; @@ -20,10 +19,10 @@ public class TestConfigServiceImpl extends BaseServiceImpl implement } @Override - public TestConfig getConfigByUserId(Integer userId) { + public TestConfig configByUserId(Integer userId) { TestConfig config = testConfigDao.getConfigByUserId(userId); if (config == null) { - config = (TestConfig) getConfigByUserId(0).clone(); + config = (TestConfig) configByUserId(0).clone(); config.setConfigId(null); config.setUserId(userId); config.setConfigId(save(config)); diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index f88f056..b3b1e4d 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -96,7 +96,7 @@ public class MessageAutoTest { LOGGER.warn("当前测试进程无法获取到指定用户的测试配置,但是不影响测试进行,使用全局测试配置!"); } - TestConfig config = testConfigService.getConfigByUserId(testUserId); + TestConfig config = testConfigService.configByUserId(testUserId); //执行测试 MessageScene scene = messageSceneService.get(Integer.valueOf(sceneId)); @@ -154,7 +154,7 @@ public class MessageAutoTest { } catch (Exception e) { LOGGER.warn("当前测试进程无法获取到指定用户的测试配置,但是不影响测试进行,使用全局测试配置!"); } - TestConfig config = testConfigService.getConfigByUserId(testUserId); + TestConfig config = testConfigService.configByUserId(testUserId); ComplexScene complexScene = complexSceneService.get(Integer.valueOf(complexSceneId)); if (complexScene == null) { @@ -589,7 +589,7 @@ public class MessageAutoTest { } //选择测试配置 - TestConfig config1 = testConfigService.getConfigByUserId(user.getUserId()); + TestConfig config1 = testConfigService.configByUserId(user.getUserId()); if (set != null && set.getConfig() != null) { config1 = set.getConfig(); diff --git a/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java b/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java index 5c16a6c..8ae0167 100644 --- a/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java +++ b/src/main/java/yi/master/coretest/message/test/performance/PerformanceTestObject.java @@ -206,9 +206,9 @@ public class PerformanceTestObject { //手动组装场景测试对象 User user = FrameworkUtil.getLoginUser(); TestConfigService testConfigService = (TestConfigService) FrameworkUtil.getSpringBean("testConfigService"); - TestConfig testConfig = testConfigService.getConfigByUserId(user.getUserId()); + TestConfig testConfig = testConfigService.configByUserId(user.getUserId()); if (testConfig == null) { - testConfig = testConfigService.getConfigByUserId(0); + testConfig = testConfigService.configByUserId(0); } testScene = new TestMessageScene(config.getMessageScene(), requestUrl, new String(requestMessage), 0, false, testConfig, PracticalUtils.jsonToMap(PracticalUtils.replaceGlobalVariable(msg.getCallParameter(), null))); testScene.setBusinessSystem(config.getBusinessSystem()); diff --git a/src/main/resources/applicationContext.xml b/src/main/resources/applicationContext.xml index ba03622..54a73c4 100644 --- a/src/main/resources/applicationContext.xml +++ b/src/main/resources/applicationContext.xml @@ -109,6 +109,7 @@ + -- Gitee From 46d25e03861631baee884f86adb9450c2a37a5e5 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Fri, 26 Feb 2021 16:56:49 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/update.md b/update.md index 4dca392..3c3fbec 100644 --- a/update.md +++ b/update.md @@ -1,6 +1,8 @@ ### v1.1.3 #### 2021.02.04 -- 全局变量增加动态组合接口类型 +- 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; +- 修复测试时获取不到用户的全局配置的问题; +- (未完成)post请求也能管理query参数中的变量; ### v1.1.2 -- Gitee From 7a051537de445ca31a8429c349e6ac3e3914936b Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Sun, 28 Feb 2021 17:32:29 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E4=BD=BF=E7=94=A8=E9=82=A3=E4=B8=AAurl=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/yi/master/constant/SystemConsts.java | 1 + .../java/yi/master/util/cache/CacheUtil.java | 22 ++- src/main/webapp/js/globalConstant.js | 2 + src/main/webapp/resource/message/autoTask.js | 1 + .../webapp/resource/system/globalSetting.html | 153 ++++++++++-------- .../resource/template/customTemplate.htm | 14 +- update.md | 1 + 7 files changed, 109 insertions(+), 85 deletions(-) diff --git a/src/main/java/yi/master/constant/SystemConsts.java b/src/main/java/yi/master/constant/SystemConsts.java index efb30af..7c816bc 100644 --- a/src/main/java/yi/master/constant/SystemConsts.java +++ b/src/main/java/yi/master/constant/SystemConsts.java @@ -185,6 +185,7 @@ public interface SystemConsts { */ String GLOBAL_SETTING_MESSAGE_ENCODING = "messageEncoding"; String GLOBAL_SETTING_MESSAGE_REPORT_TITLE = "messageReportTitle"; + String GLOBAL_SETTING_MESSAGE_CALL_HOME_URL = "messageCallHomeUrl"; /** * 邮件推送格式 */ diff --git a/src/main/java/yi/master/util/cache/CacheUtil.java b/src/main/java/yi/master/util/cache/CacheUtil.java index 75f33e6..432bff6 100644 --- a/src/main/java/yi/master/util/cache/CacheUtil.java +++ b/src/main/java/yi/master/util/cache/CacheUtil.java @@ -62,9 +62,13 @@ public class CacheUtil { private static List systemInterfaces = new ArrayList<>(); /** - * 首页地址 + * 配置的首页地址 */ private static String homeUrl; + /** + * 自动获取的首页地址 + */ + private static String autoGetHomeUrl; public static void setQueryDBMap(Map queryDBMap) { CacheUtil.queryDBMap = queryDBMap; @@ -299,10 +303,10 @@ public class CacheUtil { * @param request */ public static void setHomeUrl (HttpServletRequest request) { - if (StringUtils.isNotBlank(homeUrl)) { + if (StringUtils.isNotBlank(autoGetHomeUrl)) { return; } - homeUrl = request.getRequestURL().toString().replace(request.getServletPath(), ""); + autoGetHomeUrl = request.getRequestURL().toString().replace(request.getServletPath(), ""); } /** @@ -313,9 +317,13 @@ public class CacheUtil { * @return {@link String} */ public static String getHomeUrl() { - if (StringUtils.isBlank(homeUrl)) { - return getSettingValue(SystemConsts.GLOBAL_SETTING_HOME); - } - return homeUrl; + if ("0".equals(getSettingValue(SystemConsts.GLOBAL_SETTING_MESSAGE_CALL_HOME_URL))) { + // 使用自动获取的地址 + if (StringUtils.isNotBlank(autoGetHomeUrl)) { + return autoGetHomeUrl; + } + } + // 使用配置的地址 + return getSettingValue(SystemConsts.GLOBAL_SETTING_HOME); } } diff --git a/src/main/webapp/js/globalConstant.js b/src/main/webapp/js/globalConstant.js index 99f4f91..e674919 100644 --- a/src/main/webapp/js/globalConstant.js +++ b/src/main/webapp/js/globalConstant.js @@ -524,6 +524,8 @@ var MESSAGE_PROTOCOL = { "HTTPS":{ "Headers":{ }, + "Querys":{ + }, "Authorization":{ }, "Method":"POST", diff --git a/src/main/webapp/resource/message/autoTask.js b/src/main/webapp/resource/message/autoTask.js index ab6fe34..16f0fdf 100644 --- a/src/main/webapp/resource/message/autoTask.js +++ b/src/main/webapp/resource/message/autoTask.js @@ -109,6 +109,7 @@ var templateParams = { }, { required:true, + reminder: "暂不可用", label:"短信通知", select:[{ name:"smsNotify", diff --git a/src/main/webapp/resource/system/globalSetting.html b/src/main/webapp/resource/system/globalSetting.html index 2b5e281..f315150 100644 --- a/src/main/webapp/resource/system/globalSetting.html +++ b/src/main/webapp/resource/system/globalSetting.html @@ -29,7 +29,7 @@
-
网站设置邮件设置阿里云短信接口配置接口自动化设置WEB自动化设置
+
网站设置邮件设置接口自动化设置
@@ -177,56 +177,56 @@ -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -237,6 +237,17 @@
+
+ +
+ + + +
+
@@ -247,26 +258,26 @@ -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
+ + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/webapp/resource/template/customTemplate.htm b/src/main/webapp/resource/template/customTemplate.htm index ff69a2b..5e7b020 100644 --- a/src/main/webapp/resource/template/customTemplate.htm +++ b/src/main/webapp/resource/template/customTemplate.htm @@ -147,7 +147,7 @@ {{/if}} {{#if textarea}} {{#each textarea}} - {{#if embellish}}{{{embellish}}}{{/if}} + {{#if embellish}}{{{embellish}}}{{/if}} {{/each}} {{/if}}
@@ -667,12 +667,12 @@
-
- -
- -
-
+ + + + + +
diff --git a/update.md b/update.md index 3c3fbec..19bd778 100644 --- a/update.md +++ b/update.md @@ -3,6 +3,7 @@ - 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; - 修复测试时获取不到用户的全局配置的问题; - (未完成)post请求也能管理query参数中的变量; +- (未修復)getParametersJsonTree中在全部参数为根节点时获取rootId有误的问题 ### v1.1.2 -- Gitee From cb335c1cc52de0909af2adc020956293de7cffe1 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Sun, 28 Feb 2021 18:23:10 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E6=8A=A5=E6=96=87=E5=A2=9E=E5=8A=A0body?= =?UTF-8?q?=E8=BD=ACQuery=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/action/AutoTestAction.java | 8 +++++++- .../business/message/bean/Message.hbm.xml | 4 ++++ .../master/business/message/bean/Message.java | 18 ++++++++++++++++-- .../message/protocol/HTTPTestClient.java | 18 +++++++++++++++--- .../coretest/message/test/MessageAutoTest.java | 1 + .../message/test/TestMessageScene.java | 15 ++++++++++++++- .../java/yi/master/util/PracticalUtils.java | 2 ++ src/main/webapp/resource/message/message.js | 15 +++++++++++++++ update.md | 2 +- 9 files changed, 75 insertions(+), 8 deletions(-) diff --git a/src/main/java/yi/master/business/message/action/AutoTestAction.java b/src/main/java/yi/master/business/message/action/AutoTestAction.java index f62914d..42bd3c3 100644 --- a/src/main/java/yi/master/business/message/action/AutoTestAction.java +++ b/src/main/java/yi/master/business/message/action/AutoTestAction.java @@ -22,6 +22,7 @@ import yi.master.business.user.bean.User; import yi.master.business.user.service.UserService; import yi.master.constant.SystemConsts; import yi.master.coretest.message.parse.MessageParse; +import yi.master.coretest.message.parse.URLMessageParse; import yi.master.coretest.message.test.MessageAutoTest; import yi.master.coretest.message.test.TestMessageScene; import yi.master.exception.AppErrorCode; @@ -194,7 +195,12 @@ public class AutoTestAction extends ActionSupport implements ModelDriven + + + + diff --git a/src/main/java/yi/master/business/message/bean/Message.java b/src/main/java/yi/master/business/message/bean/Message.java index 1a3df0d..964874d 100644 --- a/src/main/java/yi/master/business/message/bean/Message.java +++ b/src/main/java/yi/master/business/message/bean/Message.java @@ -117,6 +117,11 @@ public class Message implements Serializable{ * 报文处理参数 */ private String processParameter; + + /** + * body转query参数 + */ + private String bodyToQuery; // Constructors @@ -172,8 +177,17 @@ public class Message implements Serializable{ } return interfaceId; } - - public String getSystems() { + + + public String getBodyToQuery() { + return bodyToQuery; + } + + public void setBodyToQuery(String bodyToQuery) { + this.bodyToQuery = bodyToQuery; + } + + public String getSystems() { return systems; } diff --git a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java index 709ef2e..1abaf71 100644 --- a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java +++ b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java @@ -254,7 +254,19 @@ public class HTTPTestClient extends TestClient { + ",proxyPort=" + scene.getBusinessSystem().getProxyPort()); client = proxyClient; } - + + //body转url + if (scene.isBodyToQuery()) { + if (!URLMessageParse.getInstance().messageFormatValidation(requestMessage)) { + throw new RuntimeException("请将报文设置为URL格式"); + } + if (querys == null) { + querys = new HashMap<>(); + } + querys.putAll(URLMessageParse.parseUrlToMap(requestMessage, null)); + requestMessage = ""; + } + HttpResponse response = null; long useTime = 0; HttpRequestBase request = null; @@ -441,10 +453,10 @@ public class HTTPTestClient extends TestClient { * @return * @throws Exception */ - private Object[] doPost(String method, String host, Map headers, Map querys, String body, String charSet, DefaultHttpClient client) + private Object[] doPost(String method, String host, Map headers, Map querys, String body + , String charSet, DefaultHttpClient client) throws Exception { HttpEntityEnclosingRequestBase request = null; - if (HttpMethod.PUT.name().equalsIgnoreCase(method)) { request = new HttpPut(buildUrl(host, querys)); } else if (HttpMethod.DELETE.name().equalsIgnoreCase(method)) { diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java index b3b1e4d..d5fb554 100644 --- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java +++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java @@ -905,6 +905,7 @@ public class MessageAutoTest { testScene.setTestClient(TestClient.getTestClientInstance(info.getInterfaceProtocol())); testScene.setRequestMessage(requestMessage); + testScene.setBodyToQuery(SystemConsts.DefaultBooleanIdentify.TRUE.getNumber().equals(msg.getBodyToQuery()) ? true : false); testScene.setComplexFlag(false); testScene.setScene(scene); testScene.setRequestUrl(requestUrl); diff --git a/src/main/java/yi/master/coretest/message/test/TestMessageScene.java b/src/main/java/yi/master/coretest/message/test/TestMessageScene.java index 2688ee5..606589b 100644 --- a/src/main/java/yi/master/coretest/message/test/TestMessageScene.java +++ b/src/main/java/yi/master/coretest/message/test/TestMessageScene.java @@ -105,6 +105,11 @@ public class TestMessageScene implements Cloneable { */ private Integer poolDataItemId; + /** + * body转query + */ + private boolean bodyToQuery; + public TestMessageScene(MessageScene scene,String requestUrl, String requestMessage, Integer dataId, Boolean complexFlag) { @@ -138,7 +143,15 @@ public class TestMessageScene implements Cloneable { } - public void setPoolDataItemId(Integer poolDataItemId) { + public boolean isBodyToQuery() { + return bodyToQuery; + } + + public void setBodyToQuery(boolean bodyToQuery) { + this.bodyToQuery = bodyToQuery; + } + + public void setPoolDataItemId(Integer poolDataItemId) { this.poolDataItemId = poolDataItemId; } diff --git a/src/main/java/yi/master/util/PracticalUtils.java b/src/main/java/yi/master/util/PracticalUtils.java index 02f75ac..ca46713 100644 --- a/src/main/java/yi/master/util/PracticalUtils.java +++ b/src/main/java/yi/master/util/PracticalUtils.java @@ -1089,6 +1089,8 @@ public class PracticalUtils { return maps; } + + /** * json串转json对象 * @author xuwangcheng diff --git a/src/main/webapp/resource/message/message.js b/src/main/webapp/resource/message/message.js index 4b54896..fa837bc 100644 --- a/src/main/webapp/resource/message/message.js +++ b/src/main/webapp/resource/message/message.js @@ -138,6 +138,21 @@ var templateParams = { placeholder:"输入报文入参" }] }, + { + required:true, + reminder: "在HTTP/HTTPS协议的POST/DELETE/PUT等请求中,将Body体的参数转换成URL的查询参数,并将Body体置为空", + label:"Body转Query", + select:[{ + name:"bodyToQuery", + option:[{ + value:"0", + text:"否" + },{ + value:"1", + text:"是" + }] + }] + }, { label:"测试环境", required:true, diff --git a/update.md b/update.md index 19bd778..9072bc0 100644 --- a/update.md +++ b/update.md @@ -2,7 +2,7 @@ #### 2021.02.04 - 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; - 修复测试时获取不到用户的全局配置的问题; -- (未完成)post请求也能管理query参数中的变量; +- 报文增加BodyToQuery选项,方便在Post请求时管理Query参数; - (未修復)getParametersJsonTree中在全部参数为根节点时获取rootId有误的问题 -- Gitee From 3e31f7d6fbd58a408b884b752f9f309a17082215 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Sun, 28 Feb 2021 18:28:43 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0SQL=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/update/1.1.3 | 4 ++++ update.md | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/update/1.1.3 diff --git a/src/main/resources/update/1.1.3 b/src/main/resources/update/1.1.3 new file mode 100644 index 0000000..5a8320a --- /dev/null +++ b/src/main/resources/update/1.1.3 @@ -0,0 +1,4 @@ +SET FOREIGN_KEY_CHECKS=0; +ALTER TABLE `at_message` ADD COLUMN `body_to_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '0' COMMENT 'body体内容转query参数' AFTER `project_id`; +INSERT INTO `at_global_setting`(`setting_id`, `setting_name`, `default_value`, `setting_value`, `mark`) VALUES (26, 'messageCallHomeUrl', '0', '0', '接口自动化内部请求地址'); +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file diff --git a/update.md b/update.md index 9072bc0..0969815 100644 --- a/update.md +++ b/update.md @@ -3,8 +3,8 @@ - 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; - 修复测试时获取不到用户的全局配置的问题; - 报文增加BodyToQuery选项,方便在Post请求时管理Query参数; -- (未修復)getParametersJsonTree中在全部参数为根节点时获取rootId有误的问题 - +-(未修復)getParametersJsonTree中在全部参数为根节点时获取rootId有误的问题 +- (未完成)可以设置body体为空 ### v1.1.2 #### 2021.01.30 -- Gitee From 9968a7933c25fe1674b6e36f9d1bf7f9a4043ff4 Mon Sep 17 00:00:00 2001 From: xuwangcheng Date: Mon, 1 Mar 2021 18:14:23 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=88=B01.1.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/yi/master/constant/SystemConsts.java | 2 +- src/main/java/yi/master/listener/VersionUpdateUtil.java | 1 + update.md | 2 -- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/yi/master/constant/SystemConsts.java b/src/main/java/yi/master/constant/SystemConsts.java index 7c816bc..9c2c00a 100644 --- a/src/main/java/yi/master/constant/SystemConsts.java +++ b/src/main/java/yi/master/constant/SystemConsts.java @@ -13,7 +13,7 @@ public interface SystemConsts { /** * 当前版本号 */ - String VERSION = "1.1.2"; + String VERSION = "1.1.3"; /** diff --git a/src/main/java/yi/master/listener/VersionUpdateUtil.java b/src/main/java/yi/master/listener/VersionUpdateUtil.java index 44a74c8..fb8a7ec 100644 --- a/src/main/java/yi/master/listener/VersionUpdateUtil.java +++ b/src/main/java/yi/master/listener/VersionUpdateUtil.java @@ -54,6 +54,7 @@ public class VersionUpdateUtil { ALL_VERSION_LIST.add("1.1.0"); ALL_VERSION_LIST.add("1.1.1"); ALL_VERSION_LIST.add("1.1.2"); + ALL_VERSION_LIST.add("1.1.3"); } /** diff --git a/update.md b/update.md index 0969815..d21d102 100644 --- a/update.md +++ b/update.md @@ -3,8 +3,6 @@ - 增加全局变量动态组合接口类型,通过组合场景去获取变量参数; - 修复测试时获取不到用户的全局配置的问题; - 报文增加BodyToQuery选项,方便在Post请求时管理Query参数; --(未修復)getParametersJsonTree中在全部参数为根节点时获取rootId有误的问题 -- (未完成)可以设置body体为空 ### v1.1.2 #### 2021.01.30 -- Gitee