1

石鹸UI(無料版)

XML をペイロードとして受け入れる POST であるテスト ケースがあります。私は、readingDate フィールドを計算するテスト ケースに groovy スクリプトを書きました。

グルーヴィーなスクリプト:

import java.text.SimpleDateFormat  
import java.util.Calendar  
import java.util.TimeZone  

Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
dateFormat.setTimeZone(currentTime.getTimeZone())
String readingDate = dateFormat.format(currentTime.getTime())
context.setProperty("readingDate", readingDate)

XML ペイロード:

<?xml version="1.0" encoding="UTF-8"?>
<foo xmlns="http://www.foo.com/data">
  <foobar foobarId="1553310377_20">
    <foobarReading>
      <readingDate>${readingDate}</readingDate>
      <readingValue>451.045</readingValue>
    </foobarReading>
  </foobar>
</foo>

示されているリクエスト:

POST http://foo:8080/WebServices/rest/data HTTP/1.1  
Connection: close  
Accept-Encoding: gzip,deflate  
Content-Type: application/xml  
Authorization: Basic TlJDYW46TlJDYW4=  
Content-Length: 301  
Host: foo:8080  
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)  


    <?xml version="1.0" encoding="UTF-8"?>
    <foo xmlns="http://www.foo.com/data">
      <foobar foobarId="1553310377_20">
        <foobarReading>
          <!-- Should not be empty it should show the current time -->
          <readingDate></readingDate>
          <readingValue>451.045</readingValue>
        </foobarReading>
      </foobar>
    </foo>
4

1 に答える 1

2

これは 2 つの方法で実現できます
。REST 呼び出しの前に Groovy Script テスト ステップを呼び出す場合。Groovy スクリプトに次の変更を加えます。

//Instead of setting the property to context
//context.setProperty("readingDate", readingDate)

//Approach 1:
//Set it as a global property for SoapUI
com.eviware.soapui.SoapUI.globalProperties.setPropertyValue('readingDate', readingDate)

//Approach 2:
//Or if you do not want to set it globally and ruin other tests
//Set it as a project (SoapUI Project) property.
//testRunner.testCase.testSuite.project.setPropertyValue('readingDate', readingDate)

前者の場合、xml は次のようになります。

<readingDate>${readingDate}</readingDate>

後者の場合、プロパティは Project プロパティである必要があるため、

<readingDate>${#Project#readingDate}</readingDate>

于 2013-06-05T21:19:13.887 に答える