我有一个应用程序,我正在尝试使用Locust加载测试。如果我事先知道帖子的参数,我可以将它们添加到帖子中,并且工作正常:
self.client.post("/Login", {"Username":"user", "Password":"a"})
应用程序使用一系列隐藏字段,这些字段在交互式发布页面时发送。这些字段的内容是动态的,并由服务器在运行时分配以管理会话等,例如
<input type="hidden" name="$$submitid" value="view:xid1:xid2:xid143:xid358">
有没有办法可以选择这些来添加我的帖子数据?我知道隐藏输入的名称。
答案 0 :(得分: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_)