方案 - :
这里是一个groovy脚本,用于将shell脚本从本地上传到远程,groovy脚本正在为shell脚本选择错误的路径错误的本地路径,尽管shell脚本存储路径是在全局属性中设置的。
这是我的pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zaloni.bedrock</groupId>
<artifactId>integration-tests</artifactId>
<packaging>jar</packaging>
<version>4.2.0-SNAPSHOT</version>
<name>Integration Tests for Bedrock</name>
<url>https://wiki.zaloni.net/index.php?title=Bedrock_Test_Automation</url>
<pluginRepositories>
<pluginRepository>
<id>SmartBearPluginRepository</id>
<url>http://www.soapui.org/repository/maven2/</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.12</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.42</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.smartbear.soapui</groupId>
<artifactId>soapui-pro-maven-plugin</artifactId>
<version>4.6.1</version>
<dependencies>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.9-RC1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.12</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.42</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<executions>
<!--add a new execution block with a different id for each new test xml file-->
<execution>
<phase>integration-test</phase>
<id>Bedrock-4-0-soapui-project.xml</id>
<configuration>
<projectFile>${pom.basedir}/Project_Names/Bedrock-4-0-soapui-project.xml</projectFile>
<junitReport>true</junitReport>
</configuration>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
以下是我得到的例外情况。&#39;
java.io.FileNotFoundException: E:\SoapUI_Work\Bedrock_Automation_RestAPI\ShellScriptLib\PreLog_Execute.sh (The system cannot find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
at Remote_connection.uploadToRemote(Script1.groovy:82)
at Remote_connection$uploadToRemote.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at Script1.run(Script1.groovy:33)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:96)
at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:89)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:149)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:239)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runCurrentTestStep(WsdlTestCaseRunner.java:48)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:148)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:43)
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:135)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
13:33:11,003 ERROR [log] Unable to Upload Data To Remote Server : An error occurred at uploadToRemote() : null
行为 - (&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI \ bedrock-qa \ SOAP_UI_FrameWork_SanitySuite \ ShellScriptLib&#34;)已在全局属性中设置,因此Groovy脚本应采用此路径,但需要(&#34; E :\ SoapUI_Work \ Bedrock_Automation_RestAPI / ShellScriptLib&#34;)这个路径所以它基本上会跳过路径中的2个目录。
Path set in global property -("E:\SoapUI_Work\Bedrock_Automation_RestAPI\bedrock-qa\SOAP_UI_FrameWork_SanitySuite\ShellScriptLib")
Path is picking -("E:\SoapUI_Work\Bedrock_Automation_RestAPI/ShellScriptLib") "
项目中使用的与路径变量相关的脚本
//Script1
//=======
//Get Project Name
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def projectDir = groovyUtils.projectPath
log.info "Project Directory " + projectDir
def mavenBaseDir = ((new java.io.File(projectDir)).getParentFile().getAbsoluteFile())
log.info "mavenBaseDir-:$mavenBaseDir"
//Change the path to get ShellScript Dir( Remote server support only in this way )
ShellScriptDir=new java.io.File(mavenBaseDir,"ShellScriptLib").toString()
log.info "Shell Script Dir:"+ShellScriptDir"
//Script2
//========
//get Local_Dir_path where Shell Script exist
def LocalDir_path = context.expand( '${ShellScriptDir_path}' )
def Remote_Dir_path = "/home/bedrock/Soapui_Automation"
Remote_Conn.uploadToRemote(project_IP,
22,
project_SERVER_USER_ID,
project_SERVER_PASSWORD,
LocalDir_path,
"PreLog_Execute.sh",
Remote_Dir_path)
请解决任何问题。
感谢
答案 0 :(得分:0)
是的,它不会。 1.如果它在soapui工作,soapui很高兴找到你提供的路径
然后说到maven,maven无法找到你提供的路径,这意味着你需要指向相对于maven路径的脚本文件
请正确检查pathSeperator,如果路径中有变量,请进行交叉检查
在windows C:\\ some \\ path \\ $ {variableinpath} \\ otherfolder或者C:/ some / path / $ {variableinpath} / otherfolder你需要使用路径
还可以尝试从Windows资源管理器E中访问以下路径:\ SoapUI_Work \ Bedrock_Automation_RestAPI \ ShellScriptLib \
问题
同时检查这个直到&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI&#34;斜线必须是\但不是/
路径正在挑选 - (&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI / ShellScriptLib&#34;)&#34;
我希望这个答案有所帮助,发布你的发现。
答案 1 :(得分:0)
如果异常消息声称没有此类文件或目录,则必须验证指定的是否正确并实际指向系统中存在的文件或目录。