目前我在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()
虽然这可行,但它并不像我上面提到的其他工具那样优雅。
答案 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}
或用户可以提供他的首选路径。
如果您希望通过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"))