我是groovy的新手,我希望有肥皂请求,其中包含我想要在运行我的TestCase时复制到具有特定名称的文件夹的文件。我的测试用例将被创建;第一个soap请求禁用和将运行并复制soap的groovy。你能告诉我吗?
答案 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测试来验证每个业务规则是否有效,但更好的方法是创建一个包含每个测试参数的数据存储,包括预期结果。
使用数据存储和数据循环,您可以为数据存储中的每一行调用结果测试步骤。
示例测试数据
示例流程
为数据源中的每一行调用数据源和数据循环之间的所有步骤。
恕我直言,这些都很棒,因为它减少了在SoapUI中维护的测试数量,如果你需要添加其他方案,例如没有电子邮件地址,那么您只需更新数据源链接到的电子表格。
返回将文件内容拉入SoapUi请求....
示例流程....
第一步是对某些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)