2015-11-25 44 views
1

我有一個應用程序,我試圖用Locust加載測試。如果我事先知道後的參數,我可以將它們添加到一個職位和工作正常:在Locust中發佈動態值

self.client.post("/Login", {"Username":"user", "Password":"a"}) 

該應用程序使用了一堆網頁時交互發帖稱被髮送隱藏字段。這些字段的內容是動態的,並由服務器在運行時分配以管理會話等。

<input type="hidden" name="$$submitid" value="view:xid1:xid2:xid143:xid358"> 

有沒有一種方法可以選擇添加到我的發佈數據?我知道隱藏輸入的名稱。

回答

1

您可以使用PyQuery編寫一個函數來提取此數據。您只需在發送發佈請求之前調用它。如果你想創建一堆數據,你可以調用它在on_start函數將它們存儲在一個數組中,然後在任務中使用它。請參閱下面的示例:

from locust import HttpLocust, TaskSet, task 
from pyquery import PyQuery 

class UserBehaviour(TaskSet): 

    def get_data(self, url, locator): 
     data = [] 
     request = self.client.get(url) 

     pq = PyQuery(request.content) 
     link_elements = pq(locator) 
     for link in link_elements: 
      if key in link.attrib and "http" not in link.attrib[key]: 
       data.append(link.attrib[key]) 

     return data 

    @task 
    def test_get_thing(self): 
     data_ = self.get_data("/url/to/send/request", "#review-ul > li > div > a", "href") 
     self.client.post("url", data = data_) 
+0

謝謝Mesut。 –