Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SOAPUI中为groovy脚本指定工作目录?_Groovy_Soapui - Fatal编程技术网

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

如何在SOAPUI中为groovy脚本指定工作目录?,groovy,soapui,Groovy,Soapui,目前,我在SoapUI中运行的所有groovy脚本似乎都使用…\SoapUI-5.2.1\bin作为工作目录。根据对的一个回答,我尝试设置项目的Resource Root属性,但是这对groovy脚本使用的工作目录没有影响 实例 在SoapUI中创建一个新项目。添加testsuite、testcase和groovy脚本测试步骤。在测试脚本中,简单地说: log.info new File("").getAbsolutePath() 单击绿色箭头以运行脚本。对我来说,这将始终返回SoapUI安装

目前,我在SoapUI中运行的所有groovy脚本似乎都使用…\SoapUI-5.2.1\bin作为工作目录。根据对的一个回答,我尝试设置项目的Resource Root属性,但是这对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()
虽然这样做很有效,但它并不像我使用上述其他工具所能做到的那样优雅。

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

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

工作目录是与上下文相关的东西。它可能会根据调用相应进程的方式/目录而有所不同

例如,可以从不同目录的命令行调用SoapUI

用户转到%SOAPUI\u HOME%\bin目录并运行SOAPUI.bat命令。 用户打开命令提示符,并直接运行soapui.batit要求%soapui\u HOME%\bin位于%PATH% 在这两种情况下,工作目录可能不同

那么,如何在Groovy脚本中找到它呢

给你:

def pwd = new File('.').absolutePath
log.info "Current working directory is ${pwd}"
我还想澄清SoapUI的项目属性资源根。SoapUI允许有${projectDir}或${workspaceDir},或者用户可以提供其首选路径

${projectDir}-这只是当前soapui项目的父目录。 如果要通过Groovy脚本获取此位置?使用以下两种方法之一:

def project = context.testCase.testSuite.project
log.info context.expand(project.resourceRoot)


你想达到什么目标?请提供一些上下文?@Rao我只是认为处理相对路径比使用必须添加到每个路径字符串的变量更优雅。这可以在其他工具(如IntelliJ/Eclipse)中完成,所以我想知道在SoapUI中是否也可以做到这一点?那么,在您链接到的答案中,到底有什么不满足您的要求呢?你能提供你的脚本吗?@SiKing就像我已经解释过的:我链接到的答案建议在SoapUI中设置资源根属性,这似乎对groovy在SoapUI中使用的工作目录没有影响。我不认为我的问题与任何特定脚本有任何联系,它将适用于在SoapUI中运行的任何groovy脚本。我将从问题中删除groovy标记,以避免将来出现任何混淆。@EJS,仍然不确定这个问题。您正在寻找soapui项目的资源根值吗?也许你会展示你的剧本。您也可以用示例来解释-您期望的是什么以及您得到的是什么?在这里,您也可以看到Resource Root项目属性,并在下拉列表中设置您想要的值,而不是可用的值。顺便说一句,您尝试过以上建议的方法吗?.executenull,新文件$rootLocation if变量
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