2

我在 SoapUI Open Source 中准备了一个测试用例,它循环遍历 csv 文件中的值并为每组值发送请求(由 groovy 脚本处理)。我想修改它,以便每个新迭代的每个线程都使用来自下一行 csv 文件的值。

 import com.eviware.soapui.impl.wsdl.teststeps.*

 def testDataSet = []
 def fileName = "C:\\sSHhrTqA5OH55qy.csv"

 new File(fileName).eachLine { line -> testDataSet.add( line.split(",") ) }

 def myProps = new java.util.Properties();
 myProps = testRunner.testCase.getTestStepByName("Properties");

 def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context );
 def testCase = testRunner.testCase;

 def testStep = testCase.getTestStepByName("TestRequest");

 testRunner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner(testCase, null);
 testStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext(testStep);

 while (true) {
   for ( i in testDataSet ) {

     myProps.setPropertyValue("parameter0",i[0]);
     myProps.setPropertyValue("username",i[1]);
     myProps.setPropertyValue("parameter1",i[2]);
     myProps.setPropertyValue("password",i[3]);

     testStep.getTestRequest().setUsername(myProps.getPropertyValue("username"))
     testStep.getTestRequest().setPassword(myProps.getPropertyValue("password"))

     testStep.run(testRunner, testStepContext);     
   }
 }

我想修改此脚本,以便池中的每个线程从数据源中获取唯一(下一个)未使用的值

我尝试按照这里的建议使用 java.util.concurrent 中的 newFixedThreadPool (Concurrency with Groovy),但是我无法让它工作 - 请求重复或 SoapUI 崩溃(我是并发新手)。

你能帮我把它弄好吗?

4

2 回答 2

1

我认为这对你有用:

 while (true) {
 for ( i in testDataSet ) {

 def th = Thread.start(){
 myProps.setPropertyValue("parameter0",i[0]);
 myProps.setPropertyValue("username",i[1]);
 myProps.setPropertyValue("parameter1",i[2]);
 myProps.setPropertyValue("password",i[3]);

 testStep.getTestRequest().setUsername(myProps.getPropertyValue("username"))
 testStep.getTestRequest().setPassword(myProps.getPropertyValue("password"))

 testStep.run(testRunner, testStepContext);
 }

th.join()     
}

因此,将在每个循环上创建新线程。

如果你想测试它是否工作,你可以将 loginfo(s) 放在代码中......

 log.info("Thread Id: " + Thread.currentThread().getId() as String)
于 2013-09-13T16:25:26.390 回答
0

我不明白你的意思。SoapUi 已经为您提供了一个接受 csv 文件作为输入的数据源测试步骤。

因此,一旦您拥有所有这些值,您就可以传输属性并运行测试。

于 2014-04-15T13:31:57.127 回答