我有一个具有多个操作的WSDL。对于每个操作,我想要一个模板. xml及其响应和请求。
我知道如何在soapUI中手动执行此操作,但我想使用Groovy脚本生成它们。我已经谷歌了很多,但似乎我是唯一一个正在寻找这个的人。
我的服务有16个操作,所以做这本手册会花费太多时间。由于服务每2个月更新一次,所以使用测试步骤的自动化将是完美的。
我已经为这些请求做到了:
右键单击左树中的“服务”、“生成测试套件”、“每个操作一个请求的单个测试用例”
然后我循环遍历这些测试步骤请求并将它们存储在我的磁盘上。
import com.eviware.soapui.impl.wsdl.teststeps.*
for( testCase in testRunner.testCase.testSuite.getTestCaseList() )
{
for( testStep in testCase.getTestStepList() )
{
if( testStep instanceof WsdlTestRequestStep )
{
log.info "operation name: " +testStep.getName()
// create file name
Date startTime = new Date();
def cur_Time = startTime.getMonth() + "_" + startTime.getDate();
cur_Time = cur_Time + "_" + startTime.getHours() + startTime.getMinutes() +startTime.getSeconds()
def fileName = testStep.getName() + "_" + cur_Time
def inputFileRequest = new File("T:\\"+ "Request_" + fileName+".txt")
def inputFileResponse = new File("T:\\"+ "Response_" + fileName+".txt")
// write request to file
inputFileRequest.write(testStep.getProperty("request").value)
}
}
}
但我还没有找到一种方法来做到这一点。如果我使用getProperty(“repose”),它当然是空的。
有任何提示吗?:)
这很棒,甚至我也在做同样的事情。到目前为止,我正在从文件夹中获取xml请求,但我只想从WSDL本身获取请求并获取它的参数。
尝试{
//Hitting the WSDLs one by one
wsdlList.each
{
wsdl ->
wsdlToHit=wsdl
log.info("WSDL To Hit :" + wsdlToHit)
// Creating an interface
log.info("Before Interface Creation")
iface= WsdlInterfaceFactory.importWsdl( project,wsdl, false )[0]
//iface= WsdlInterfaceFactory.importWsdl( project,WSDLFile, false )[0]
log.info("After Interface Creation")
if(Operation == "xyz")
{
requestXML= requestXML1
responseActual= responseActual1
expectedActual=expectedActual1
}
if(Operation == "abc")
{
requestXML= requestXML2
responseActual= responseActual2
expectedActual=expectedActual2
}
requestXML.each
{
request1 ->
def wsdlReqDir=request1
log.info("RequestLocation : " + wsdlReqDir)
File fl = new File(wsdlReqDir)
File[] wsdlDirFiles = fl.listFiles()
log.info("XML Files in Request Folder : " + wsdlDirFiles)
if(wsdlDirFiles.size()>0)
{
wsdlDirFiles.each
{
wsdlFile->
log.info("Request XML file to Send :" + wsdlFile)
//Calling the function to hit the service
sendRequest(wsdlFile,iface,Operation,Report_File_LOC,requestXML,responseActual,propData)
reportFilewriter.flush()
}
}
}
//removing Interface created
removeInterface(wsdl)
log.info("Removed iface : " + wsdl)
reportFilewriter.flush()
}
谢谢,哈努曼
赢家是,我自己发现的:
map = context.testCase.testSuite.project.interfaces["services"].operations
for (entry in map)
{
opName = entry.getKey()
inputFileRequest = new File("T:\\" + opName + "Request.xml")
inputFileResponse = new File("T:\\" + opName + "Response.xml")
inputFileRequest.write(entry.getValue().createRequest(true))
inputFileResponse.write(entry.getValue().createResponse(true))
}
我在SoapUI中有一个肥皂测试项目。我已经将所有请求作为测试步骤添加到测试套件中。 每次开始测试时,我需要更新WSDL定义并重新创建请求(同时保留现有值)。 我需要一个groovy脚本的帮助来自动完成这个过程,这个脚本可以放在项目内部,每次在执行开始之前运行。
使用 Windows 7 和 Soap 5.2.0 免费软件。 我也在Smart Bear社区询问过这一点,他们只给了我推荐阅读的帖子。这些帖子与这个问题无关。 我有一个 REST 项目,它有一个测试套件和一个包含两个测试步骤的测试用例。第一步是一个时髦的步骤,带有一个时髦的脚本,它调用第二个测试步骤。第二个测试步骤是 REST GET 请求,该请求将字符串发送到我们的 API 服务器,并以 JS
我从项目中的脚本执行一个脚本。 该脚本中还有另一个循环,即执行请求。之后,应该执行另外两个脚本来处理输出。这些在请求步骤之后的相同testcase中,但不会自动执行。
当我尝试在soapUI测试步骤中解析响应时,收到了以下异常。也尝试了getXMLHolder方法。还是没运气。 答复如下
所以我很精通java,但我刚刚开始学习groovy,并使用SOAPUI和groovy测试SOAP请求。我尝试使用groovy脚本测试一个SOAP请求,并设置请求随后用作参数来测试xml的属性值。现在,我在SOAP XML中不断得到这个错误: 但是我可以看到属性值何时被更新!我在我的测试用例的自定义属性下看到了它。传递的值应该是整数,但设置属性值只能是字符串。这可能是问题所在吗?这一切令人讨厌的部分
我正在尝试编写一个时髦的脚本来更新 SoapUI 请求的某些 CDATA 部分。 我对SoapUI和groovy都是新手。 我已经成功地通过使用属性转移完成了我需要的事情,但是,由于我需要在几乎所有测试用例中执行相同的处理,因此我宁愿在可以从任何需要的地方调用的脚本中执行此操作。 我试图模仿groovy中的属性转移步骤,但是没有成功,因为我似乎无法访问和解析CDATA部分。 任何关于如何使用gro