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

时间:2016-10-19 16:02:01

标签: groovy soapui

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

我该怎么做?

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

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")

1 个答案:

答案 0 :(得分:0)

我建议避免额外的Groovy Script测试步骤来存储上一步请求/响应。

下面的脚本假设,在测试套件级别有用户定义的属性(REQUEST_PATH)及其值(存储数据的有效文件路径,由正斜杠分隔的路径' /'甚至在窗户上。)

而是将Script Assertion用于Billing请求步​​骤本身(在测试用例中再少一步)

//Stores raw request to given location using utf-8 encoding
new File(context.testCase.testSuite.getPropertyValue('REQUEST_PATH') as String).write(context.rawRequest,'utf-8')

实际上context.requestcontext.rawRequest以及使用rawRequest的上述脚本之间存在细微差别。

context.request - 将保留变量,而不是实际值。

例如:

<element>${java.util.UUID.randomUUID().toString()}</element>

context.rawRequest - 的位置将包含请求中发送的实际值。

例如:

<element>4ee36185-9bfb-47d2-883e-65bf6d3d616b</element>

编辑根据评论:请针对ACCESS DENIED问题尝试此问题

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')