当前,我在soap UI中运行的所有常规脚本似乎都使用“ ... \ SoapUI-5.2.1 \ bin”作为工作目录。从这个问题的答案之一,我尝试设置项目的Resource Root属性,但是这对groovy脚本使用的工作目录没有影响。
例在SoapUI中创建一个新项目。添加一个测试套件,测试用例和一个Groovy脚本测试步骤。在测试脚本中,只需输入:
log.info new File("").getAbsolutePath()
单击绿色箭头以运行脚本。对我来说,这将始终返回SoapUI安装的bin文件夹的路径。
我在寻找什么在像IntelliJ这样的工具中,可以在脚本的运行配置中指定工作目录。这使该工具可以从任何路径开始该过程。除此之外,大多数其他工具会将工作目录默认为项目文件夹,而不是像SoapUI那样的工具安装文件夹。
我目前的解决方法我当前正在使用一个工作目录变量,该变量传递给脚本中所有相关的路径字符串。使用上面的示例,它看起来像:
String workingDir = "C:/somedir/" log.info new File(workingDir + "somepath").getAbsolutePath()
尽管此方法有效,但它并不像我使用上述其他工具所能做到的那样优雅。
Working
目录是与上下文有关的东西。而且,它可能取决于从哪个目录/从哪个目录调用相应进程。
例如,SoapUI
可以从不同目录的命令行中调用。
用户转到%SOAPUI_HOME%\bin
目录并运行soapui.bat
命令。
用户打开命令提示符,然后直接运行soapui.bat
(它必须%SOAPUI_HOME%\bin
在中%PATH%
)
在两种情况下,工作目录可能不同。
好吧,我怎么找到它Groovy Script
呢?
干得好:
def pwd = new File('.').absolutePath log.info "Current working directory is ${pwd}"
我还想澄清一下SoapUI的project属性Resource Root
。SoapUI允许${projectDir}
or ${workspaceDir}
或user可以提供他的首选路径。
$ {projectDir}-这只是当前soapui项目的父目录。
如果您想通过此位置Groovy Script
?使用以下两项之一:
def project = context.testCase.testSuite.project log.info context.expand(project.resourceRoot)
要么
def projectPath = new com.eviware.soapui.support.GroovyUtils(context).projectPath //gets the path of the project root log.info projectPath