在 Locust 中发布动态值
Posting dynamic values in Locust
我有一个应用程序正在尝试使用 Locust 进行负载测试。如果我事先知道 post 的参数,我可以将它们添加到 post 并且工作正常:
self.client.post("/Login", {"Username":"user", "Password":"a"})
该应用程序使用了一堆隐藏字段,这些字段在页面以交互方式 posted 时发送。这些字段的内容是动态的,由服务器在运行时分配以管理会话等。例如
<input type="hidden" name="$$submitid" value="view:xid1:xid2:xid143:xid358">
有什么方法可以让我选择这些并添加到我的 post 数据中?我知道隐藏输入的名称。
您使用 PyQuery
编写了一个函数来提取此数据。您只需要在发送 post 请求之前调用它。如果你想创建一堆数据,你可以在 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_)
我有一个应用程序正在尝试使用 Locust 进行负载测试。如果我事先知道 post 的参数,我可以将它们添加到 post 并且工作正常:
self.client.post("/Login", {"Username":"user", "Password":"a"})
该应用程序使用了一堆隐藏字段,这些字段在页面以交互方式 posted 时发送。这些字段的内容是动态的,由服务器在运行时分配以管理会话等。例如
<input type="hidden" name="$$submitid" value="view:xid1:xid2:xid143:xid358">
有什么方法可以让我选择这些并添加到我的 post 数据中?我知道隐藏输入的名称。
您使用 PyQuery
编写了一个函数来提取此数据。您只需要在发送 post 请求之前调用它。如果你想创建一堆数据,你可以在 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_)