当前位置: 首页 > 知识库问答 >
问题:

Groovy脚本-从SOAP UI自动请求和保存响应

孟鹏海
2023-03-14

我是Groovy脚本新手。

要求从文本文件中读取请求值并将其传递给肥皂请求xml并保存输出。

面临的问题:我无法读取步骤1到步骤2的数据。然而,我也在设置上下文变量中的值。请帮助我解决此问题,以便我能够自动化整个过程。

注意:我们只能访问SOAPUI,不能访问SOAPUI Pro

步骤1:

File file1 = new File("C:\\Users\\Groovy Test\\requests\\orders.txt") 
List textLine = file1.readLines() 
log.info textLine 
context.put('textLine', textLine)  
log.info textLine

第2步:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
</soapenv:Header>
<soapenv:Body>
<OrderId>${context.get('textLine' )}</OrderId>
</soapenv:Body>
</soapenv:Envelope>

步骤3:

def fileList = context.get('textLine')
def fileName = fileList.pop()
def newname = fileName[0..-5]
def response = context.expand( '${Step2#Response}' )
def f = new File("C:\\Users\\Groovy Test\\responses\\${fileName}_Response.xml")
f.write(response, "UTF-8")
if(fileList.size() >0)
{
testRunner.gotoStepByName("Step2")
}

共有2个答案

锺高翰
2023-03-14

我认为问题在于步骤2的Xml表示法:

使用:

<OrderId>${=context.get('textLine')}</OrderId>

而不是:

<OrderId>${context.get('textLine')}</OrderId>

注意=字符。

曹振
2023-03-14

以下是实现您所期望的目标的方法。

测试用例包含3个步骤,如下所示:

  • 步骤1-Groovy脚本测试步骤。它读取数据源,通过循环执行顺序步骤。控制测试运行
  • 步骤2-Soap请求测试步骤。获取订单

step1的Groovy脚本:

def data = new File('C:/Users/Groovy Test/requests/orders.txt') 
data.eachLine { orderId ->
   context.orderId = orderId
   //Get the step2, index of the step is 1
   def step = context.testCase.getTestStepAt(1)
   //Run the step2
   step.run(testRunner, context)
}
//By now all the orders got executed, now need to exit the step without additionally running step2
//So, jump to step2, index is 2
testRunner.gotoStep(2)

将请求更改为使用

为步骤2的请求添加脚本断言。这将检查响应并将其保存。

步骤2的脚本断言

//Check if there is response
assert context.request, "Request is empty or null"

//Save the contents to a file
def saveToFile(file, content) {
    if (!file.parentFile.exists()) {
         file.parentFile.mkdirs()
         log.info "Directory did not exist, created"
    }
    file.write(content) 
    assert file.exists(), "${file.name} not created"
}

def f = new File("C:/Users/Groovy Test/responses/${context.orderId}_Response.xml")
saveToFile(f, context.response)

步骤3的Groovy脚本:

log.info "Test completed."

 类似资料:
  • 当我尝试在soapUI测试步骤中解析响应时,收到了以下异常。也尝试了getXMLHolder方法。还是没运气。 答复如下

  • 我从项目中的脚本执行一个脚本。 该脚本中还有另一个循环,即执行请求。之后,应该执行另外两个脚本来处理输出。这些在请求步骤之后的相同testcase中,但不会自动执行。

  • 我有一个具有多个操作的WSDL。对于每个操作,我想要一个模板. xml及其响应和请求。 我知道如何在soapUI中手动执行此操作,但我想使用Groovy脚本生成它们。我已经谷歌了很多,但似乎我是唯一一个正在寻找这个的人。 我的服务有16个操作,所以做这本手册会花费太多时间。由于服务每2个月更新一次,所以使用测试步骤的自动化将是完美的。 我已经为这些请求做到了: 右键单击左树中的“服务”、“生成测试

  • 使用 Windows 7 和 Soap 5.2.0 免费软件。 我也在Smart Bear社区询问过这一点,他们只给了我推荐阅读的帖子。这些帖子与这个问题无关。 我有一个 REST 项目,它有一个测试套件和一个包含两个测试步骤的测试用例。第一步是一个时髦的步骤,带有一个时髦的脚本,它调用第二个测试步骤。第二个测试步骤是 REST GET 请求,该请求将字符串发送到我们的 API 服务器,并以 JS

  • 问题内容: 我可以使用Groovy脚本获取响应xml。我需要获取请求XML,因为我需要在soap ui测试中添加“断言脚本”。 我正在使用以下代码来获取响应xml 但是我不确定如何获取SOAPUI的请求xml。谁能帮我获得SOPAUI的请求xml吗? 问题答案: 要以字符串形式获取请求内容,可以使用 有关SoapUI API的更多信息,请访问http://www.soapui.org/apidoc