如何在soap ui中为groovy脚本指定工作目录?

时间:2017-01-26 16:22:08

标签: groovy soapui

目前我在soap UI中运行的所有groovy脚本似乎都在使用" ... \ SoapUI-5.2.1 \ bin"作为工作目录。从this question的答案之一我尝试设置项目的资源根属性,但这对groovy脚本使用的工作目录没有影响。

实施例

在SoapUI中创建一个新项目。添加一个testsuite,testcase和一个groovy脚本测试步骤。在测试脚本中只需输入:

log.info new File("").getAbsolutePath()

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

我正在寻找什么

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

我目前的解决方法

我目前正在使用一个工作目录变量,我将其传递给脚本中的所有相关路径字符串。使用上面的示例,这将是:

String workingDir = "C:/somedir/"
log.info new File(workingDir  + "somepath").getAbsolutePath()

虽然这可行,但它并不像我上面提到的其他工具那样优雅。

2 个答案:

答案 0 :(得分:4)

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的项目属性Resource Root。 SoapUI允许${projectDir}${workspaceDir}或用户可以提供他的首选路径。

  • $ {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

答案 1 :(得分:1)

根据here,您可以使用两种方法更改工作目录:

def processBuilder=new ProcessBuilder("ls")
processBuilder.redirectErrorStream(true)
processBuilder.directory(new File("Your Working dir"))  
def process = processBuilder.start()

"your command".execute(null, new File("your working dir"))