Groovy 保存原始请求&;用户定义路径中Soap测试步骤的响应

Groovy 保存原始请求&;用户定义路径中Soap测试步骤的响应,groovy,soapui,Groovy,Soapui,我想将soap测试步骤原始请求和步骤保存在从测试套件自定义属性中导入的配置文件读取的路径中 我该怎么做 使用以下脚本,但使用脚本中定义的固定位置 def myOutFile = "D:/TestLog/Online_Test/PostPaidSuccess_Payment_BillInqReq.x‌​ml" def response = context.expand( '${BillInq#Request}' ) def f = new File(myOutFile) f.write(re

我想将soap测试步骤原始请求和步骤保存在从测试套件自定义属性中导入的配置文件读取的路径中

我该怎么做

使用以下脚本,但使用脚本中定义的固定位置

def myOutFile = "D:/TestLog/Online_Test/PostPaidSuccess_Payment_BillInqReq.x‌​ml" 
def response = context.expand( '${BillInq#Request}' ) 
def f = new File(myOutFile) 
f.write(response, "UTF-8")

我建议避免额外的
Groovy脚本
测试步骤,只存储前面的步骤请求/响应

下面的脚本假定在测试套件级别有用户定义的属性(
请求路径
)及其值(存储数据的有效文件路径,甚至在windows上用正斜杠“/”分隔的路径)

对于
计费
请求步骤本身使用
脚本断言
(在测试用例中少了一步)

实际上,
context.request
context.rawRequest
与上面使用
rawRequest
的脚本之间有一点区别

context.request
-变量将保持原样,而不是实际值

例如:

<element>${java.util.UUID.randomUUID().toString()}</element>
根据评论编辑:请针对
拒绝访问
问题尝试此操作

def file = new File(context.testCase.testSuite.getPropertyValue('REQUEST_PATH') as String)
if (!file.canWrite()) {
    file.writable = true
}
file.write(context.rawRequest,'utf-8')
EDIT2根据OP的进一步评论,请求文件名应为当前测试步骤名

//Create filename by concatenating path from suite property and current test stepname
def filename = "${context.testCase.testSuite.getPropertyValue('REQUEST_PATH')}/${context.currentStep.name}.xml" as String
new File(filename).write(context.rawRequest,'utf-8')

我建议避免额外的
Groovy脚本
测试步骤,只存储前面的步骤请求/响应

下面的脚本假定在测试套件级别有用户定义的属性(
请求路径
)及其值(存储数据的有效文件路径,甚至在windows上用正斜杠“/”分隔的路径)

对于
计费
请求步骤本身使用
脚本断言
(在测试用例中少了一步)

实际上,
context.request
context.rawRequest
与上面使用
rawRequest
的脚本之间有一点区别

context.request
-变量将保持原样,而不是实际值

例如:

<element>${java.util.UUID.randomUUID().toString()}</element>
根据评论编辑:请针对
拒绝访问
问题尝试此操作

def file = new File(context.testCase.testSuite.getPropertyValue('REQUEST_PATH') as String)
if (!file.canWrite()) {
    file.writable = true
}
file.write(context.rawRequest,'utf-8')
EDIT2根据OP的进一步评论,请求文件名应为当前测试步骤名

//Create filename by concatenating path from suite property and current test stepname
def filename = "${context.testCase.testSuite.getPropertyValue('REQUEST_PATH')}/${context.currentStep.name}.xml" as String
new File(filename).write(context.rawRequest,'utf-8')

def myOutFile=“D:/TestLog/Online\u Test/postaidsuccess\u BillInqReq.xml”def response=context.expand(“${BillInq#Request}”)def=new File(myOutFile)f.write(response,“UTF-8”)您确定要使用配置的值单独存储原始请求吗?def myOutFile=“D:/TestLog/Online\u Test/postaidsuccess\u Payment\u BillInqReq.xml”def response=context.expand('${BillInq#Request}')def=newfile(myOutFile)f.write(response,“UTF-8”)是否确实使用配置的值单独存储原始请求?是否定义了测试套件级自定义属性
请求路径
及其值?您是否使用了
rawRequest
?如果脚本中有
log.info context.rawRequest
,会发生什么?它是否显示响应?是的,我定义了请求路径属性值,现在我被拒绝访问错误nullpoint是如何运行的?希望你能完全理解答案。你在上一个问题中也犯了同样的错误,不知道如何解决。这在你的环境中是很特别的。您可以从error.log共享日志吗?error:java.io.FileNotFoundException:D:\TestLog\Online\u Test(访问被拒绝)java.io.FileNotFoundException:D:\TestLog\Online\u Test(访问被拒绝)在java.io.FileOutputStream.open(本机方法)在java.io.FileOutputStream.(未知源)在java.io.FileOutputStream.(未知源)org.codehaus.groovy.runtime.ResourceGroovyMethods.newWriter(ResourceGroovyMethods.java:1637)org.codehaus.groovy.runtime.ResourceGroovyMethods.newWriter(ResourceGroovyMethods.java:1658)atorg.codehaus.groovy.runtime.ResourceGroovyMethods.write(ResourceGroovyMethods.java:804)org.codehaus.groovy.groovy.runtime.dgm$862.invoke(来源未知)位于org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$pojoMetamethodSiteNounwrapnocerc.invoke(PojoMetaMethodSite.java:271)a是否定义了测试套件级自定义属性
REQUEST\u PATH
及其值?是否使用了
rawRequest
?如果脚本中有
log.info context.rawRequest
,会发生什么情况?是否显示响应?是的,我定义了请求路径属性值,现在我正在获取拒绝访问的错误nullpoint是如何发生的pe您完全遵循了答案。您在上一个问题中也遇到了同样的错误,但不确定如何解决。这在您的环境中是非常特殊的。您可以从error.log共享日志吗?error:java.io.FileNotFoundException:D:\TestLog\Online\u Test(访问被拒绝)java.io.FileNotFoundException:D:\TestLog\Online\u Test(拒绝访问)位于java.io.FileOutputStream的java.io.FileOutputStream的java.io.FileOutputStream的java.io.FileOutputStream的java.io.FileOutputStream的java.io.FileOutputStream的java.org.codehaus.groovy.runtime.ResourceGroovyMethods.newWriter(ResourceGroovyMethods.java:1637)的本机方法(未知源)org.codehaus.groovy.runtime.ResourceGroovyMethods.newWriter(ResourceGroovyMethods.java:1658)atorg.codehaus.groovy.runtime.ResourceGroovyMethods.write(ResourceGroovyMethods.java:804)org.codehaus.groovy.runtime.dgm$862.invoke(未知源)位于org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$pojoMetamethodSiteNounwrapnocerc.invoke(PojoMetaMethodSite.java:271)的