2015-02-11 53 views
1

我知道使用變量可以將用戶名和密碼傳遞給API調用,但附加到待測試的請求:如何將證書傳遞給JMeter中服務器IP之前的API請求?

而不是例如。 https://api-server.com/test/somekey${USERNAME}${PWD}

我想送:

https://${USERNAME}:${PWD}@api-server.com/test/somekey

當我嘗試這一點,如果我把用戶名和密碼變量之間的冒號引發錯誤null;那麼有沒有辦法將':'傳入HTTP請求或其他解決方案?

注意:該測試的目的是通過CSV配置文件提供一個包含多個用戶名,密碼的CSV以檢查訪問權限等。我目前使用單個HTTP授權管理器來測試單個用戶的多個API調用。不過,我希望在套件中爲其他用戶運行一些API測試,那麼我該如何實現這一目標呢?

+0

您在示例中缺少$ {PWD}。我用https:// $ {user}:$ {pass} [email protected]/和User Defined Variables嘗試了一個簡單的例子,它工作正常。您還可以使用[HTTP授權管理器](http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Authorization_Manager),如果您感興趣,我可以發佈一個示例。 – 2015-02-11 20:24:42

+0

我在上面輸入時錯過了它並更正了它,但是一切正常,直到我在變量之間插入冒號「:」。我更新了描述,因爲我使用CSV配置爲HTTP請求測試多個憑據,所以我認爲授權管理員可能不適合這種情況。 – 2015-02-11 20:41:54

+0

@RichardFriedman如果這對你有幫助,你能不能請示一個例子說明https:// $ {user}:$ {pass} [email protected]/這個工作,所以我可以看到我要去哪裏錯誤?謝謝! – 2015-02-13 16:44:13

回答

1

首先,我可以使這個失敗的唯一方法是通過使用Java作爲HTTP實現,選擇HTTPClient4它工作得很好。

我有兩個JMX文件的例子。兩項測試都證明了相同的結果。 CSV包含9個有效的授權聲明和一個無效聲明,只是爲了確保兩種情況都能正常工作。

示例1.鏈接到JMX測試和文件 - HTTP Auth Manager with CSV

  • HTTP授權管理器
  • CSV數據集配置
  • HTTP請求(不完整的網址)

這工作得很好,唯一的訣竅是,你可以使用$ {用戶}和$ {從HTTP授權管理器中的csv傳遞}。

例2.鏈接到JMX測試和文件 - HTTP Request with URL

  • HTTP請求與完整的URL
  • 使用HTTPClient4
  • CSV數據集配置

這是特定的情況下你說的,我只是指定HTTPClient4 我測試的測試案例運行在5臺服務器上,每臺服務器有60個用戶/線程,循環5次。因此產生了大約3000個請求。

+0

感謝您的詳細解決方案,非常感謝。另外一個要添加的內容是檢查「每次迭代時清除身份驗證」,否則會話被緩存。 – 2015-02-16 12:25:59

1

只需使用HTTP Authorization Manager(確保選擇BASIC_DIGEST機制)作爲您想要傳遞證書的請求的子項 - 在這種情況下,它只會影響一個請求。

如果您需要爲多個請求提供授權,請將HTTP授權管理器放在與HTTP授權管理器相同的級別或子級上。

有關更多詳細信息,請參閱How to use HTTP Basic Authentication in JMeter指南。

+0

下面回答謝謝,我知道這種方法,但我需要爲同一個線程組中的相同REST API請求提供不同的授權/憑證。 – 2015-02-12 16:06:35

相關問題