如何在Soap ui中为Groovy脚本指定工作目录?

EJS*_*EJS 0 groovy soapui

当前,我在soap UI中运行的所有常规脚本似乎都使用“ ... \ SoapUI-5.2.1 \ bin”作为工作目录。从这个问题的答案之一,我尝试设置项目的Resource Root属性,但是这对groovy脚本使用的工作目录没有影响。

在SoapUI中创建一个新项目。添加一个测试套件,测试用例和一个Groovy脚本测试步骤。在测试脚本中,只需输入:

log.info new File("").getAbsolutePath()
Run Code Online (Sandbox Code Playgroud)

单击绿色箭头以运行脚本。对我来说,这将始终返回SoapUI安装的bin文件夹的路径。

我在寻找什么

在像IntelliJ这样的工具中,可以在脚本的运行配置中指定工作目录。这使该工具可以从任何路径开始该过程。除此之外,大多数其他工具会将工作目录默认为项目文件夹,而不是像SoapUI那样的工具安装文件夹。

我目前的解决方法

我当前正在使用一个工作目录变量,该变量传递给脚本中所有相关的路径字符串。使用上面的示例,它看起来像:

String workingDir = "C:/somedir/"
log.info new File(workingDir  + "somepath").getAbsolutePath()
Run Code Online (Sandbox Code Playgroud)

尽管此方法有效,但它并不像我使用上述其他工具所能做到的那样优雅。

Rao*_*Rao 6

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}"
Run Code Online (Sandbox Code Playgroud)

我还想澄清一下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)
Run Code Online (Sandbox Code Playgroud)

要么

def projectPath = new com.eviware.soapui.support.GroovyUtils(context).projectPath //gets the path of the project root
log.info projectPath
Run Code Online (Sandbox Code Playgroud)