如何将soapUI groovy脚本日志写入文本文件

时间:2016-09-20 12:34:07

标签: testing groovy automation soapui

我必须将Groovy脚本登录写入文本文件,我能够使用context.expand编写任何Soap步骤的请求和响应。

编写我正在使用的测试请求和响应:

def request =  context.expand('${SoapRequest#Request}')
new File ("D:/RequestFile.txt").write(request)

我想要的是将日志输出保存在文件中:

enter image description here

建议我在文本文件中编写Groovy脚本日志的方法。

1 个答案:

答案 0 :(得分:5)

配置方式log4j.xml

在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>   

一种可能的方法是在此配置文件中添加另一个自定义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>   

使用Groovy

但是,您似乎希望使用 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'

注意:如果您不在FileAppender中使用绝对路径,则相对于* SOAPUI_HOME \ bin *

保存日志文件

配置此项时,Groovy testSteps中的其余日志将附加到此文件中。如果您只想获取特定Groovy testStep的日志,那么您只需删除脚本末尾的appender:

groovyLogger.removeAppender(fileAppender);

<强>更新

你评论:我想为每次运行存储输出,如果我再次执行它,它应该重写文件。

因此,您希望为每次运行存储输出...但是如果再次执行,则要覆盖该文件?这是矛盾的不是吗?

如果您要覆盖文件而不是附加内容,可以使用setAppend(false)

fileAppender.setAppend(false)
fileAppender.activateOptions()
groovyLogger.addAppender(fileAppender)