2015-11-25 4 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. –

Смежные вопросы