Reputation: 1071
Currently all groovy scripts i run in soap UI seems to be using "...\SoapUI-5.2.1\bin" as the working directory. From one of the answers to this question I tried setting the Resource Root property of my project, however this has no effect on the working directory that the groovy scripts use.
Create a new project in SoapUI. Add a testsuite, testcase and a groovy script test step. In the test script simply put:
log.info new File("").getAbsolutePath()
Click on the green arrow to run the script. For me this will always return a path to the bin folder of the SoapUI installation.
In tools like for example IntelliJ it's possible to specify a working directory in the run configurations for a script. This allows the tool to start the process from any path. In addition to this most other tools will default the working directory to the project folder and not the tools installation folder like SoapUI seems to do.
I'm currently using a working directory variable that I pass to all relevant path strings in my scripts. Using the example above this would look like:
String workingDir = "C:/somedir/"
log.info new File(workingDir + "somepath").getAbsolutePath()
While this works it's not as elegant as what I can do with other tools like mentioned above.
Upvotes: 0
Views: 11253
Reputation: 21389
Working
directory is something which is related to context. And it may vary depending on how / from which directory the respective process is invoked.
For instance, SoapUI
can be invoked from command line from different directories.
%SOAPUI_HOME%\bin
directory and run soapui.bat
command.soapui.bat
(it requires %SOAPUI_HOME%\bin
to be in %PATH%
)The working directory may be different in both the cases.
Well, how do I find it in Groovy Script
?
Here you go:
def pwd = new File('.').absolutePath
log.info "Current working directory is ${pwd}"
I would also like to clarify about SoapUI's project property Resource Root
. SoapUI allows to have either ${projectDir}
or ${workspaceDir}
or user can provide his preferred path.
If you want to get this location thru Groovy Script
? Use one of the below two:
def project = context.testCase.testSuite.project
log.info context.expand(project.resourceRoot)
or
def projectPath = new com.eviware.soapui.support.GroovyUtils(context).projectPath //gets the path of the project root
log.info projectPath
Upvotes: 8
Reputation: 1209
according to here, you can change the working directory using two methods:
def processBuilder=new ProcessBuilder("ls")
processBuilder.redirectErrorStream(true)
processBuilder.directory(new File("Your Working dir"))
def process = processBuilder.start()
or
"your command".execute(null, new File("your working dir"))
Upvotes: 2