2

SoapUIオープンソースでテストケースを準備しました。これは、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を使用しようとしましたが(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 に答える