我想保存肥皂测试步骤原始请求&步骤在从测试套件自定义属性中导入的配置文件中读取的路径中。
我该怎么做?
使用以下脚本但使用脚本中定义的固定位置。
def myOutFile = "D:/TestLog/Online_Test/PostPaidSuccess_Payment_BillInqReq.xml"
def response = context.expand( '${BillInq#Request}' )
def f = new File(myOutFile)
f.write(response, "UTF-8")
答案 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.request
和context.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')