2014-03-06 51 views
4

我開始評估SoapUI作爲我的測試套件,但屬性傳輸的東西真的讓我失望。我已經閱讀了很多關於它的文章,但是我找不到辦法讓它在我的情況下工作。SoapUI - 如何使用屬性傳輸POST請求

我的源代碼是POST請求。此POST請求返回給我一個JSON。我需要將這個JSON的值傳遞給下一個測試。

我的回答是這樣的:

<Response xmlns="https://localhost/authorize"> 
    <access_token>4a00c67e</access_token> 
    <refresh_token></refresh_token> 
    <scope>auth</scope> 
    <token_type>online</token_type> 
</Response> 

我需要得到<access_token>並把它傳遞到下一個測試作爲參數。

我應該在SOURCE和TARGET框中寫下什麼來使其發揮作用?爲什麼它如此複雜,爲什麼沒有容易理解的教程呢? :(

回答

0

對我來說,最簡單的方法是使用「屬性:響應」和「路徑語言:JSONPath」。

那麼對於源我用簡單的「$ .access_token」

爲目標,我定義的屬性調用在項目ACCESS_TOKEN。

2

在你的來源將是從那裏你想要得到的數據,在源屬性選擇響應的步驟。

在下面源的空間放//access_token財產轉移的步驟,這將提取的價值如果你沒有提供xpath soapUI將提供整個響應xml傳輸

你的目標將是你想要設置提取的屬性,<access_token>在你的情況下的步驟。該物業將是您想要設定提取值的物業。

重要將您的財產轉移步驟在源步驟之後。在soapUI中的執行是自上而下的,如果在源步驟之前放置了財產轉移,您將沒有任何價值可以轉移。

爲了舉個例子 soapUI property transfer step

在這個例子中我有一個測試請求稱爲SourceRequest其響應將被轉移到稱爲AA測試套件級別屬性。你可以在這裏看到。我給了我的房產轉讓名稱PropertyTransferName(它可以是任何你想要的)。在源文件中,我提到我的源請求和屬性爲Response。由於我要將整個響應保存在測試套件級屬性中,因此我提到了我的測試套件作爲目標,並給出了要傳輸的屬性的名稱。

在這我可以通過給你一個xpath像你需要做的那樣解析我的源屬性的響應。

希望這會有所幫助。

+0

謝謝阿布舍克。但是,我只需要使用'',而不是整個響應。你知道如何做到這一點? – Daniel

+0

是啊,就像我在我的文章中提到的...在源空間和以上目標放在//access_token –

+0

我不能讓它只與// access_token一起工作,而它應該根據XPath工作。它在我使用命名空間時起作用。 – GustavoH

8

添加到阿布舍克說。如果你只需要在你的access_token將使用以下XPath:

declare namespace var="https://localhost/authorize"; 
//var:Response/var:access_token 
+4

它不需要聲明名稱空間。相反,如果soapUI在名稱空間丟失時發生抱怨,我們可以使用// *:access_token。 –

+0

有趣,我不知道。謝謝(你的)信息。 – Juicebox

-1

爲了轉移財產,重要的是要知道響應類型(從正在傳輸值)是JSON或XML。如果它是JSON,如下面的截圖:

enter image description here

確保在如下轉移屬性窗口設置屬性爲「ResponseAsXml」:

enter image description here

其他「響應」會做需要的事情。

1

對於 「源代碼」 的x路使用:

**//*[local-name()='access_token']** 

選擇 「傳送文本內容

選擇 「使用XQuery

這應該提取文本內容來自您的access_token節點。

+0

幾乎完美的是,我必須使用// * [local-name()='access_token']和ResponseAsXml,正如@Hina answer中指出的那樣,但其他選項都是正確的,謝謝 – maxivis

相關問題