我正在尝试一个数据驱动的方法,在肥皂用户界面使用Groovy脚本,我想导出每个动态请求和响应从MessageExchange到Excel工作表。我使用输入数据Excel文件“dataFile.xls”进行简单的“登录”操作。它由2个字段用户名和密码与4条记录。我的脚本正在做一个数据驱动的方法,并执行Excel文件中的所有记录。但是我想将所有四个动态请求和响应导出到Excel文件“Output.xls”中。我的肥皂包有两个Groovy测试请求(一个用于数据驱动程序,另一个用于循环),一个属性测试步骤用于保存输入元素属性和临时变量,一个肥皂测试请求“登录”。下面是我在“数据驱动程序”Groovy测试步骤中使用的代码片段。
// IMPORT THE LIBRARIES WE NEED
import com.eviware.soapui.support.XmlHolder
import jxl.*
import jxl.write.*
import com.eviware.soapui.model.iface.MessageExchange
// DECLARE THE VARIABLES
def myTestCase = context.testCase //myTestCase contains the test case
log.info(myTestCase)
def counter,next,previous,size //Variables used to handle the loop and to move inside the file
Workbook workbook1 = Workbook.getWorkbook(new File("d:\\Groovy videos\\dataFile.xls")) //file containing the data
Sheet sheet1 = workbook1.getSheet(0) //save the first sheet in sheet1
size = sheet1.getRows().toInteger() //get the number of rows, each row is a data set
log.info(size)
propTestStep = myTestCase.getTestStepByName("Property - Looper") // get the Property TestStep object
log.info(propTestStep)
req = myTestCase.getTestStepByName("login").getProperty("Request").getValue()
//log.info(req)
propTestStep.setPropertyValue("Total", size.toString())
counter = propTestStep.getPropertyValue("Count").toString() //counter variable contains iteration number
counter = counter.toInteger() //
next = (counter > size-2? 0: counter+1) //set the next value
// OBTAINING THE DATA YOU NEED
Cell u = sheet1.getCell(0,counter) // getCell(column,row) //obtains user
Cell p = sheet1.getCell(1,counter) // obtains password
workbook1.close() //close the file
////////////////////////////////////
usr = u.getContents()
pass = p.getContents()
propTestStep.setPropertyValue("user", usr) //the value is saved in the property
propTestStep.setPropertyValue("pass", pass) //the value is saved in the property
propTestStep.setPropertyValue("Count", next.toString()) //increase Count value
next++ //increase next value
propTestStep.setPropertyValue("Next", next.toString()) //set Next value on the properties step
WritableWorkbook workbook2 = Workbook.createWorkbook(new File("d:\\output.xls"))
WritableSheet sheet2 = workbook2.createSheet("Request", 0)
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def temp=testRunner.testCase.testSteps["login"]
def testStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext(temp)
def reqq = testStepContext.getRequestContent()
log.info(reqq)
//def temp=testRunner.testCase.testSteps.testRequest.getRequestContent()
//holder = groovyUtils.getXmlHolder(messageExchange.requestContent)
log.info("request : "+temp)
Label label1 = new Label(0, 6, temp);
sheet2.addCell(label1);
workbook2.write()
workbook2.close()
//Decide if the test has to be run again or not
if (counter == size-1)
{
propTestStep.setPropertyValue("StopLoop", "T")
log.info "Setting the stoploop property now..."
}
else if (counter==0)
{
def runner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner(testRunner.testCase, null)
propTestStep.setPropertyValue("StopLoop", "F")
}
else
{
propTestStep.setPropertyValue("StopLoop", "F")
}
我得到的错误groovy.lang.Mis的方法异常:没有签名的方法:com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext.get请求内容()适用于参数类型:()值:[]错误行:50"
有人可以帮我吗?主要目标是从 MessageExchange 获取所有动态请求和响应,并将所有数据导出到 excel 工作表中。
您最好利用项目级别事件“TestRunListener.afterStep”来完成您的任务。
在这种情况下,您将可以访问testRunner,上下文
肥皂服务:
if (context.getCurrentStep() instanceof WsdlTestRequestStep) {
WsdlTestStepResult soapResult= (WsdlTestStepResult) testStepResult;
log.info "Request: "+soapResult.getRequestContent();
log.info "Response: "+soapResult.getResponseContent();
}
对于Rest服务:
if (context.getCurrentStep() instanceof RestTestRequestStep) {
RestRequestStepResult restResult= (RestRequestStepResult) testStepResult;
log.info "Request: "+restResult.getRequestContent();
log.info "Response: "+restResult.getResponseContent();
}
您的程序在那里抛出异常:
def testStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext(temp)
def reqq = testStepContext.getRequestContent()
log.info(reqq)
例外非常清楚MissingMethodException
,所以问题是com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext
没有getRequestContent()
方法。
总之,在您的代码中,您只在< code>log.info(reqq)上使用< code>reqq...那么不用分析整个代码,解决问题的简单方法就是删除这几行,因为它们没有用。
我正在编写一个Groovy脚本来使用SOAP Web服务。首先,我在SOAP中导入了我的WSDL并创建了一个项目。 那么所有的SOAP请求都会自动生成。 现在我尝试编写一个Groovy来使用生成的SOAP请求调用SOAP服务。 现在这是我的时髦脚本 我想访问在SOAPUI-CreateNote中生成的相同SOAP请求。我如何访问它? 我的实际需求是访问Groovy脚本中的所有SOAP请求——这样我
我是Groovy脚本新手。 要求从文本文件中读取请求值并将其传递给肥皂请求xml并保存输出。 面临的问题:我无法读取步骤1到步骤2的数据。然而,我也在设置上下文变量中的值。请帮助我解决此问题,以便我能够自动化整个过程。 注意:我们只能访问SOAPUI,不能访问SOAPUI Pro 步骤1: 第2步: 步骤3:
我正在使用jenkins和Jobdsl创建jenkins的工作。我试图通过在active choice参数中添加一个groovy脚本来构建一个参数化作业。脚本使用存储在jenkins凭据中的凭据,我正试图通过使用代码在脚本中获取它
我从项目中的脚本执行一个脚本。 该脚本中还有另一个循环,即执行请求。之后,应该执行另外两个脚本来处理输出。这些在请求步骤之后的相同testcase中,但不会自动执行。
我正在编写一个时髦的脚本,以在一个步骤中测试我的所有服务。 我导入了WSDL,然后自动生成所有SOAP请求。 我希望减少逐个测试所有SOAP服务的手动工作。 所以,如果可能的话,我想通过groovy实现。 从addressScript中的这里——我想在以后的所有测试用例中访问所有的SOAP请求。那么有没有可能通过上下文中的一些循环来实现它呢..?下面是我正在尝试的示例代码。 我的主要座右铭是减少逐