Err*_*ter 2 testing groovy automation soapui
我必须将Groovy脚本登录写入文本文件,我能够使用编写任何Soap步骤的请求和响应context.expand.
写我正在使用的测试请求和响应:
def request = context.expand('${SoapRequest#Request}')
new File ("D:/RequestFile.txt").write(request)
Run Code Online (Sandbox Code Playgroud)
我想要的是将日志输出保存在文件中:
建议我在文本文件中编写Groovy脚本日志的方法.
在SOAPUI log4j配置文件中已经配置了Groovy日志文件.
在SOAPUI_HOME\bin\soapui-log4j.xml中:
<appender name="GLOBAL_GROOVY_LOG" class="org.apache.log4j.FileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="${soapui.logroot}global-groovy.log"/>
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<logger name="groovy.log">
<level value="INFO" />
<appender-ref ref="GLOBAL_GROOVY_LOG" />
</logger>
Run Code Online (Sandbox Code Playgroud)
一种可能的方法是FileAppender在此配置文件中添加另一个自定义.如果更改此文件,请记住重新启动SOAPUI以便它可以加载更改.
像这样的东西可以做到这一点:
<appender name="GLOBAL_GROOVY_LOG" class="org.apache.log4j.FileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="${soapui.logroot}global-groovy.log"/>
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<appender name="MYLOG_CUSTOM" class="org.apache.log4j.FileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="/absoultePath/yourlogFile.txt"/>
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<logger name="groovy.log">
<level value="INFO" />
<appender-ref ref="GLOBAL_GROOVY_LOG" />
<appender-ref ref="MYLOG_CUSTOM" />
</logger>
Run Code Online (Sandbox Code Playgroud)
但是,您似乎希望使用Groovy脚本动态地执行它,因此您可以使用以下代码来获取<logger name="groovy.log">并添加一个FileAppender; 为了您可以将日志保存在自定义文件中:
import org.apache.log4j.Logger
import org.apache.log4j.PatternLayout
import org.apache.log4j.RollingFileAppender
// get the groovy logger by name
def groovyLogger = Logger.getLogger('groovy.log')
// pattern Layout
PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n")
// create a file appender
RollingFileAppender fileAppender = new RollingFileAppender(layout, "/absolutePath/myLog.txt")
groovyLogger.addAppender(fileAppender)
log.info 'someText to the logger'
Run Code Online (Sandbox Code Playgroud)
注意:如果不使用绝对路径,FileAppender则相对于*SOAPUI_HOME\bin*保存日志文件
配置此项时,Groovy testSteps中的其余日志将附加到此文件.如果您只想获取特定Groovy testStep的日志,那么您只需删除脚本末尾的appender:
groovyLogger.removeAppender(fileAppender);
Run Code Online (Sandbox Code Playgroud)
更新:
从你评论:我想存储每次运行的输出,如果我再次执行它,它应该重写该文件.
因此,您希望为每次运行存储输出...但是如果再次执行,则要覆盖该文件?这是矛盾的不是吗?
如果要覆盖文件而不是附加可以使用的内容setAppend(false):
fileAppender.setAppend(false)
fileAppender.activateOptions()
groovyLogger.addAppender(fileAppender)
Run Code Online (Sandbox Code Playgroud)