diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index f3bea26140efe1189c5b1f5c7131d0f20133117f..da9097fd10c9e2b2bdcd0628d0c4860f61d495e7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -64,7 +64,7 @@ public class RuoYiApplication "...................=/,OOO@@.............,@@^oOO@@@OOo/`**/oO@@@@@@@@@@@@@@@@@@@\\.............OO@O@OO/\\@/@@//@@@O^................\n" + "...................=`O@@@O@`............/@@@@@]`.,`[,oO@@@@@@@@@@@@@@@@@@@@@`.................=/@OOO\\@@@@/OO@@@`O................\n" + "....................\\/@@@@@@`...,`...,/@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.................=/OO@OOOOOOOOOO@@..................\n" + - "..................................................................................................................................\n\n" + - " 小钻风启动完毕, 随时准备巡山 ლ(´ڡ`ლ)゙\n"); + ".................................................................................................................................\n\n" + + " 小钻风整装待发, 准备巡山 ლ(´ڡ`ლ)゙"); } } \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/main.html b/ruoyi-admin/src/main/resources/templates/main.html index ead301f019ae6d493b36c99b30ac619363dbad60..37747cba2534edfa40bc24a4568bac5118f02e16 100644 --- a/ruoyi-admin/src/main/resources/templates/main.html +++ b/ruoyi-admin/src/main/resources/templates/main.html @@ -12,52 +12,23 @@ -
- .@@O/^,\\].............]O`.....................................***/*\\/@@\\`..,//\\OO/.OO@@@@@/....
- ..\\@@O/`.[OO]`.....,//................./O`......................*\\[]\\O[/,]/\\O\\,.=OO@@@@@@^.......
- ...,@@@O@o`./\\O@@@@/................./=@@^.......................**=o/OO@o\\`O.]OO@@@@@@@^.......
- .....@@@@@@O\\*,`=@`................=\\O@@@\\........................**ooOO@O`]/OOOO@@@@@@^......
- ......@@@@@@@@\\@/.................O/O@@@@@.........................*=oOO@@OOO@@@@@@@@@^......
- .......\\@@@@@@@/................=@^\\@@@@@@@@\\]`*...................*=oOoO@@@@@@@@@@@@^.......
- ........=@@@@@O...............,.O/O@@@@@@@O@@OOo[**................**oOOoO@@@@@@@@@@@........
- .........,@@@@.............,`..\\@@@@@@@@@@OOOo[**..................**ooO@OoO@@@@@@@@@@@O]]`]..
- ...........@@`..................*[\\OOO/[[[`*......................***oOO@@OOOOO@@@@@@@@@@]]..
- ...........//....................................................***ooOO@@@@@@@@@@@@@@@@@@@O`.
- ........../@`....................................................**oooO@@@@@@@@@@@@@@@@@OO@@O`
- ......../@@O....................................................***ooOO@@@@@@@@@@@@@@@@@@@@O
- ......./@@^..................................................,]o\\]ooOOO@@@@@@@@@@@@@@@@@@@@@O\\O@
- .....,O@@@Oo^*.................................................*OO@@@OOOO@@@@@@@@@@@@@@@@@@@@@
- ....,@O@@@O^.................[o`..... ..`]Oo\\..................,OO@@@@OOO@@@@@@@@@@@@@@@@@@@@@@@@`.
- ./@O@@@@@@O..........].......=o......o@@@@@@@@@@OOOOOO\\.....OOO@@@OOOO@@@@@@@@@@@@@@@@@@@\\]]]]
- .@OO@@@@@.........,@@@@@O^..,oO`**.../@@@@@@@@@@@@@@@@@/[`....,OOOO@@OOOOO@@@@@@@@@@OO[`***,]]]]O]
- .@@@@@@/.......,O@@@@@@@@Ooo/@@]`=oOO@@@@O[[[[ooOOOOO@@@@@@@@@@OO@@OOOOOOO@@@@@@\\`[[o\\OO@@@@@@@@@@@@OO/..
- @`=@@@@@\\`..OOO@@@@@@OOOOOO/oOo[*,**`oOOOO@@@@@@@@@@@@@@@@OOO@OOOO@@OOOOOOO@@@@@OO@@@@@@@@@@@@@@@@@@o@..
- @@@@@@@@@@@OOo]/O@@@O/o`*.......*,=OOO@@@@@[],]@@\\/\\@@@@@@OOOOOOOOOOOOOO@@@O@@@@@@@@@@@@@O@O@@`/`....
- ./O@@@@@OOOOOO@@@@@@@@@@@OO^*.......**oOOOO@@`..=/\\@@@@@O/@@@OOOOOOOOOOoOoOO@@/,@@@@@@@@@@@O@O@@//`.......
- ....\\OOO@OOOO@@O`**`=]\\@@OOO`********/O@@O@@...=@`/@@@@@@.@@OOOOOOOOOOOooOoOOOo]/@@@@@@@@@@@@@[//....
- .@@@@@@@@@@@@@...,@[\\@@@O@@@Ooo****,/oOOO@@`.. =@@@@@@@@@/@OOOOOOOOOOOOOoOoOOO@@@@@@@@@@@@@/,/`........./@@@@\\/O`..
- .\\\\,@@@@@@@@@@@. @@@@@@@@/@@Oo^`...,[OOOOO\\].. \\@@@@@]/@@OooooOoOOooOOOOOOOOO@@@@@@[[\\@@O@@`..........=@@@@@@@\\..
- ...\\`\\O@@@@@@@@\\. @@@@@@@@]\\OO`..........,[OOOOO\\]/@@@/[o[`*,oOOOOOOOOOOOOOOOOOOO/`**`*]@/\\O^........]@@@@@@@@@`.
- ....,@`,O@@@@@@O@\\/@@@@@//OO`................oooo*........./,,ooOOOOOOOOOOOOOOO@@@@@@@`...O/^....]@@@@@@O@@@@@^.
- .......\\]\\@@@@O\\//\\OO//``.***.. .......................ooooooooOOOOoOOOOooOO@@@`.=@O@]]//@..]@@@@@OOO@O@@@/@.
- .........,\\OO@OO\\O`................]]...................=o[\\ooo\\OO[\\/ooooOooo@@......[@O@/\\@@@@@@OOooO@@@O^..
- ............@/oOoOO^..........\\/ooO^.....................,\\O[[....*//oooo/o*@/........,/@@@@@@O@/ooooO@O@/[.
- ............O\\oooOoO............**..............,o@@O............**,ooooo/,@^......]@@@@@@@OOO/\\@]o\\oOO@..
- ........,/@@@.,[OO/`.....O.. ..... . ........*,@@@@O^...........***/oooo`,@`..,/@@@@@@@@OOOOOo`/O@@/\\@O@O^.
- .......=@@@@@^..........O\\..............,]O@/OO@@@@O..........****,ooo/,O/..]@@@@@@@OOOOOOOOOO]/=OOOO@@@.
- .......=@@@@@@........,oOO@\\@@@@@@@@@@@@@@@@@ ./@@OO*......******oooo*//,/@O@[@@@@OOOOOOO@@@@OOO/\\OO@@@o^..
- ........,@@@@@@]`*.*][***[O`=@@@@@OO@@OOOOOO@@@@@Oooo**********,`\\ooO@@@O@[`..O@@@@OOOOO@@@@@//OOOOO@@@^....
- .........\\@@@@/\\^****.....`/O@@@OooOOOO/[OOO@@@Oo/************,*=O@@@@/`......,*@@@@OOO@@@\\@@@/OOOO@@@O^....
- ..........,@@....,O`......**\\O@@OOOoOoOOOO@@@O/*\\**********]/OO@@@@@@@@@^.......OO@@@OO@@@\\@=OOOOOO@@@O^..
- ..........]/[@@].....[\\]......,*[@@@@@@@@/[*******,/]]]ooOO@@@@@@@@@@@@`........=\\@@@OOOOO\\OOOOOOOO@@O..
- ........,/`,/@`@^........,\\@@\\``*.....,^.********/OOOO@@@@@@@@@@@@@@/[...........=o@@@OO/\\Oo\\@@@/O@O@o^...
- ........=/,OOO@@.............,@@^oOO@@@OOo/`**/oO@@@@@@@@@@@@@@@@@@@\\.............OO@O@OO/\\@/@@//@@@O^...
- ........=`O@@@O@`............/@@@@@]`.,`[,oO@@@@@@@@@@@@@@@@@@@@@`.................=/@OOO\\@@@@/OO@@@`O..
- .........\\/@@@@@@`...,`...,/@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.................=/OO@OOOOOOOOOO@@....

-                              大王叫我来巡山嘞 ლ(´ڡ`ლ)゙ - - - +

使用简介

+

1 实现登录方式

+

源码中实现com.ruoyi.tester.login.Login接口, 参照com.ruoyi.tester.login.XzfLogin, 主要操作有@Component标记为Spring托管; 实现getLoginType()方法, 定义登录类型的code; 实现doLogin()登录操作; 实现makeHeaders()组装headers信息. 然后在系统中的字典管理-数据字典中添加新的登录类型, 字典键值为刚刚定义的登录类型code. 如果调用的接口不需要登录, 此步骤可省略.

+

2 配置登录信息

+

在登录配置页面点击添加按钮, 选择登录类型, 填写登录地址的全路径和登录参数等信息进行保存. 如果调用的接口不需要登录, 此步骤可省略.

+

3 配置接口元信息

+

在接口信息页面点击添加按钮, 录入接口所需信息, 其中接口地址只需要添加mapping相对地址, get参数和body参数可以添加默认的mock参数, 后续任务-接口关联关系中如果填写了对应的参数信息, 会覆盖这里的默认参数.

+

4 配置任务信息

+

在任务信息页面点击添加按钮, 填写主机地址, 端口号, 登录配置信息. 这里的主机地址和端口号将用于此任务关联下的所有接口调用.

+

5 配置任务-接口关联关系

+

在任务接口关联信息页面点击添加按钮, 选择关联关系, 此处可选择接口依赖于本任务下的多个其他接口, 依赖参数可以指定从其他依赖接口中提取返回结果中的某些信息. 还可以重新指定主机地址, 端口号, get参数, body参数, 登录信息, 如果此处填写, 则调用时以这里填写的参数为准.

+

6 执行任务

+

在任务信息页面点击对应任务行上的执行按钮, 运行此次任务, 任务的执行结果可在任务调用日志页面查看.

+

7 参数转换工具

+

由于配置中的参数无论是get参数还是body参数都是存入的json格式, 与实际接口调用时传入的参数格式可能不一致, 所以此页面提供了几种转换方式, 将其他格式的参数转换为json格式, 方便录入.

+

8 自定义函数

+

系统已经提供了一系列自定义函数以供依赖参数和接口调用结果判定时使用, 如果需要实现新的函数, 可在源码中实现com.ruoyi.tester.executor.expression.ExpressionAnalysis接口, 主要操作有@Component标记为Spring托管; 实现getExpressionName()方法定义函数名; 实现getDescription()方法添加函数说明; 实现analysis()实现具体的函数操作. 具体可参考系统已实现的其他函数定义.

diff --git a/tester/src/main/java/com/ruoyi/tester/executor/ExpressionContext.java b/tester/src/main/java/com/ruoyi/tester/executor/ExpressionContext.java index b90a5dde4185a861b036c4005452e65040444141..ae49a8378037d899da21b25c91837b211f5344fe 100644 --- a/tester/src/main/java/com/ruoyi/tester/executor/ExpressionContext.java +++ b/tester/src/main/java/com/ruoyi/tester/executor/ExpressionContext.java @@ -1,6 +1,5 @@ package com.ruoyi.tester.executor; -import com.ruoyi.common.json.JSONObject; import com.ruoyi.tester.domain.TaskInterfaceEffectiveInfo; import org.json.JSONArray; diff --git a/tester/src/main/java/com/ruoyi/tester/executor/ExtraHandlerImpl.java b/tester/src/main/java/com/ruoyi/tester/executor/ExtraHandlerImpl.java index 2cbdfd5dc94e6ed9c500c7207f6c98714f59bcbc..d25804deeba78aab6aa8b0b93e8712c26a3deaea 100644 --- a/tester/src/main/java/com/ruoyi/tester/executor/ExtraHandlerImpl.java +++ b/tester/src/main/java/com/ruoyi/tester/executor/ExtraHandlerImpl.java @@ -81,6 +81,9 @@ public class ExtraHandlerImpl implements IExtraHandler { JSONArray innate = new JSONArray(); innate.put(response); AnalysisResult analysisRet = analysisCodeBlock(interfaceInfo.getJudgeExpression(), interfaceInfo, innate); + if(analysisRet == null || analysisRet.getVa().length <= 0){ + return false; + } for (Object obj : analysisRet.getVa()){ Boolean bo = (Boolean)obj; ret = ret && bo; diff --git a/tester/src/main/java/com/ruoyi/tester/executor/expression/ExpressionContainer.java b/tester/src/main/java/com/ruoyi/tester/executor/expression/ExpressionContainer.java index a6c1814272a9d27be4eeaf9ea39d1059652aed65..6b629571cbfde989a5147a967e7e133be36cbd5a 100644 --- a/tester/src/main/java/com/ruoyi/tester/executor/expression/ExpressionContainer.java +++ b/tester/src/main/java/com/ruoyi/tester/executor/expression/ExpressionContainer.java @@ -1,6 +1,5 @@ package com.ruoyi.tester.executor.expression; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/tester/src/main/java/com/ruoyi/tester/login/XzfLogin.java b/tester/src/main/java/com/ruoyi/tester/login/XzfLogin.java index 516cb5c8a1f1885a9f61baf3bc4c8c7cf99b828d..2b8d3241e6a9143052bdbd54a03d2bd2bcc4fc53 100644 --- a/tester/src/main/java/com/ruoyi/tester/login/XzfLogin.java +++ b/tester/src/main/java/com/ruoyi/tester/login/XzfLogin.java @@ -5,14 +5,12 @@ import com.mashape.unirest.http.HttpResponse; import com.ruoyi.tester.domain.TesterLoginConfig; import com.ruoyi.tester.domain.TesterLoginRst; import com.ruoyi.tester.executor.InterfaceCallUtils; -import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.util.HashMap; -import java.util.List; import java.util.Map; /**