在 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_)