如何使用groovy将soapui中的请求复制到文件夹?

时间:2017-10-01 13:56:23

标签: groovy soapui

我是groovy的新手,我希望有肥皂请求,其中包含我想要在运行我的TestCase时复制到具有特定名称的文件夹的文件。我的测试用例将被创建;第一个soap请求禁用和将运行并复制soap的groovy。你能告诉我吗?

5 个答案:

答案 0 :(得分:0)

是的,可以做到。这真的很直接。我花了两分钟时间创建一个复制请求和响应文件的例子....

在您的测试中,在感兴趣的请求之后添加一个groovy步骤。在groovy中,您需要引用请求并将其放在文件中......

def rawRequest = context.expand( '${YOUR REQUEST NAME HERE#RawRequest}' )

def file1 = new File('c:/temp/groovy1.txt');
file1.write (rawRequest);

return rawRequest;

这会将您的“原始请求”转储到文件中。

同样,这是将请求的响应保存为XML的示例。你需要一个进一步的groovy脚本步骤。再一次,非常简单......

def responseAsXml = context.expand( '${YOUR REQUEST NAME#ResponseAsXml}' )


def file1 = new File('c:/temp/groovy2.xml');
file1.write (responseAsXml);
return responseAsXml;

你没有事件需要return语句。我只是把它们扔进去,所以我可以检查我是否从请求步骤中提取数据。

显然,您需要对其进行扩展才能正确命名文件。您还应该进行一些执行检查,以确保没有问题写入文件。

如果您有专业版,可以右键单击Groovy脚本,然后按照“获取数据”上下文菜单查找要转储到文件中的内容。

如果您没有专业版,那么您需要将xpath手工制作到感兴趣的节点。使用log.info(someVar)来帮助验证您是否已进入感兴趣的节点。

答案 1 :(得分:0)

好的,我有一个解决方案,但在此之前,我应该提到SoapUI的数据驱动测试功能。你看过数据接收器和数据存储了吗?

Data Sinks允许您从特定测试步骤中提取特定值并将其保存到文件中。您可以保存先前请求或其响应中的值。

在测试中,您将创建一个数据存储,该数据存储链接到您保存的文件。数据存储对象允许您映射已保存文件中的列。设置完成后,您将使用标准请求创建另一个请求,但您可以使用数据存储中的值替换硬编码值。

这允许您创建一个单独的测试,然后可以使用数据存储中的每一行数据调用该测试。

例如,您正在测试创建用户'网络服务。 Web Service有许多需要应用的业务规则。例如。姓氏不是空白。 您可以编写单独的SoapUI测试来验证每个业务规则是否有效,但更好的方法是创建一个包含每个测试参数的数据存储,包括预期结果。

使用数据存储和数据循环,您可以为数据存储中的每一行调用结果测试步骤。

示例测试数据

Example test data

示例流程

Example flow

为数据源中的每一行调用数据源和数据循环之间的所有步骤。

恕我直言,这些都很棒,因为它减少了在SoapUI中维护的测试数量,如果你需要添加其他方案,例如没有电子邮件地址,那么您只需更新数据源链接到的电子表格。

返回将文件内容拉入SoapUi请求....

示例流程....

enter image description here

第一步是对某些Web服务的原始请求。

第二步将请求写入文本文件......

def rawRequest = context.expand( '${REST Test Request#RawRequest}' )

def file1 = new File('c:/temp/groovy1.txt');
file1.write (rawRequest);
return rawRequest;

第三步使用Groovy读取文件......

def file1 = new File('c:/temp/groovy1.txt');

return file1.text;

最后,最后一步是带有文件内容的请求。为此,请正常创建请求。在请求选项卡中,删除请求的主体,并使用$ {}来提取Groovy脚本从文件中读取的字符串。

${Load Saved Request from File - Groovy Script#result#}

当测试运行时,步骤3中的Grrovy会读取文件,但不会对其执行任何操作。当SoapUI尝试运行第4步时,它会看到$ {}指令并获取Step 3 groovy脚本返回的字符串。

现在,您有一些示例,说明如何编写请求文件,读取文件以及将文件内容喷入请求。

答案 2 :(得分:0)

我在过去看到过其他解决方案,我仍然希望使用它来安装使用rest方法。我想我可以有一个选项,所以首先将SOAP请求作为可扩展步骤,然后按照屏幕截图中的第2步进行groovy: enter image description here

答案 3 :(得分:0)

看我的截图: enter image description here

soap请求包含一个xml和包含你的代码的groovy,它在C:\ tem下创建了groovy1但是有0kb - 空文件。

def rawRequest = context.expand(' $ {SOAP#RawRequest}')

def file1 = new File(' c:/tem/groovy1.txt'); file1.write(rawRequest);

答案 4 :(得分:0)

def cur_Time = Calendar.getInstance(TimeZone.getTimeZone('IST')).format("EEE, dd MMM yyyy HH-mm-ss z")

new File("C:\\Users\\SHILPA\\Desktop\\soapUIxls\\RequestPayload"+cur_Time+".doc").write(context.rawRequest)  

它将有助于通过传递的动态值捕获请求有效负载。

因此您可以在soapUIlog中看到请求和响应负载

log.info(context.response)
log.info(context.rawRequest)